c# pdf viewer open source : Move pages in a pdf file control application platform web page html wpf web browser World%20of%20Warcraft%20Programming%20(2nd%20Edition)7-part1871

Chapter 2
Exploring Lua Basics
29
The
tostring()
function takes whatever it is given (in this case a number)
and turns it into a string value.
Converting Strings to Numbers
Conversely, you may have a string of digits that you’d like to convert to a
number. Lua’s built-in
tonumber()
function takes a value and turns it into
a number. If the digits can’t be converted (such as when the string doesn’t
contain anumber), thefunction returns thevalue
nil
.Hereare someexamples:
> x = tonumber(“1234“)
> print(type(x))
number
> print(x)
1234
> x = tonumber(“1e3“)
> print(type(x))
number
> print(x)
1000
Here the strings are converted into numbers, and the results are printed to
the screen. The
tonumber()
function has a few more tricks up its sleeve that
you can explore in Chapter 7.
Quoting Strings
So far, you’ve used double quotes to create strings, but there are several ways
toconstructastring forusein Lua.Whenprogramming,itisconsideredproper
style to use the same type of quote character (as described in the following
sections) unless you have a specific reason for needing to use a different type.
This helps other people read your code without confusion.
Single Quote (’)
You can use the single quote mark (
)—also called a tick or tick mark—to
create astring,and this is standard convention.Nothingreallyspecial happens
here unless you need to include a tick mark within your string. Look at the
following examples:
> x = 'Hello’
> print(type(x))
string
> x = 'Isn’t it nice?’
stdin:1: `=´ expected near `it´
The first example works correctly and creates a new string with the text
Hello
inside.
Move pages in a pdf file - re-order PDF pages in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Support Customizing Page Order of PDF Document in C# Project
pdf rearrange pages online; reorder pages in pdf file
Move pages in a pdf file - VB.NET PDF Page Move Library: re-order PDF pages in vb.net, ASP.NET, MVC, Ajax, WinForms, WPF
Sort PDF Document Pages Using VB.NET Demo Code
rearrange pages in pdf; reordering pdf pages
30
Part I
Learning to Program
The second example throws an error that you should explore a bit more.
What Lua sees here is an identifier (
x
), the assignment operator (
=
), and a
string (
’Isn’
). Because Lua doesn’t require any whitespace between most
operations, it immediately starts the next part of the expression, which begins
with the identifier
t
.The next thing the interpreter sees is another identifier
called
it
,and doesn’t know what to do with it. In this case, the interpreter
infers that you meant to use the assignment operator and errors out with this
suggestion.
You can get around this by escaping the tick mark that is inside the string to
tell Lua that it’s part of the string instead of the end of it. Here’s an example:
> x = 'Isn\’t it nice?'
> print(type(x))
string
You tackle the details of string escaping shortly.
Double Quote (’’)
The double quote (
)can be used the same way as the single quote, with the
same caveat of needing to escape embedded quote characters. Here are some
examples:
> x = “Hello“
> print(type(x))
string
> x = “Isn’t it nice?“
> print(type(x))
string
> x = “I play the game “World of Warcraft““
stdin:1: '=' expected near 'of'
The second works because the tick mark isn’t being used to delimit the
quote, but the inner quote in the third example needs to be escaped with a
backslash:
> x = “I play the game, \“World of Warcraft\““
> print(type(x))
string
Bracket Quote ([[ ]])
Lua has the concept of a long quote that enables you to include multiple
lines and internal quote characters. These quotes begin with the open bracket
character (
[
), have any number of equal signs (
=
), including 0, and then
C# PDF File & Page Process Library SDK for C#.net, ASP.NET, MVC
random pages can be deleted from PDF file as well. Sorting Pages. RasterEdge XDoc.PDF allows you to easily move PDF document pages position, including sorting
how to reorder pdf pages in reader; move pages in pdf online
C# TIFF: How to Reorder, Rearrange & Sort TIFF Pages Using C# Code
Using this C#.NET Tiff image management library, you can easily change and move the position of any two or more Tiff file pages or make a totally new order for
how to rearrange pdf pages in preview; reorder pages pdf file
Chapter 2
Exploring Lua Basics
31
another open bracket (
[
). The string closes only when it finds the opposite
combination (close brace, equal signs, close brace). Although this may seem
overly complex, it enables you to tailor-make your quote start/end for the
contents inside. Consider the following example:
> x = [[This is a long string, and I can include ' and “]]
> print(x)
This is a long string, and I can include ' and “
This includes no equal signs, which is the typical case. You could instead
include any number of them, if you needed to use the string
“]]“
somewhere
in your larger string, as in this example:
> x = [==[This is a long string, and I can include ]], ', and “]==]
> print(x)
This is a long string, and I can include ]], ', and “
Youmay notfindyourselfusing the
[[Some String]]
syntaxoften,butitcan
be useful when the string spans multiple lines, or includes quote characters.
Escaping Special Characters
Beyond the ‘ and ‘‘characters, thereareother characters that aren’t necessarily
type-able but need to be included in a string. Try to make a multiline string
and see what happens:
> x = “First line
>> Second line“
stdin:1: unfinished string near '“First line’
Two things happen here:First,theprompt changes totwo
>>
signs insteadof
the normal one. This means you have an unfinished block and the interpreter
is waiting for you to finish the expression. Second, you get an error about an
unfinished string. This is a peculiarity in the Lua interpreter, because nothing
you can type on the second line will allow you to complete the expression.
You get around this by using
\n
,an escaped character that means newline.
Type the following:
> x = “First line\nSecond line“
> print(x)
First line
Second line
When constructing a string, you can include any of the escape sequences
listed in Table 2-4. Not all entries will have an effect when printed inside
World of Warcraft, but you should be aware of what valid sequences exist
because you may find them in preexisting strings.
C# Word - Sort Word Pages Order in C#.NET
C# DLLs: Move Word Page Position. Add references: Swap Two Word Pages Position Using C#. You may choose two pages of Word file and exchange their position.
change page order in pdf online; how to move pages in pdf converter professional
C# PowerPoint - Sort PowerPoint Pages Order in C#.NET
splitting. C# DLLs: Move PowerPoint Page Position. C#. You may choose two pages of PowerPoint file and exchange their position. String
rearrange pdf pages reader; how to move pages around in pdf
32
Part I
Learning to Program
Table 2-4: String Escape Sequences
SEQUENCE
DESCRIPTION
\a
audible bell
\b
backspace
\f
form feed
\n
newline
\r
carriage return
\t
horizontal tab
\v
vertical tab
\\
backslash
\“
double quote
\’
single quote
\xxx
ASCII character ddd
In World of Warcraft, you typically only encounter
\n
,
\\
,
\“
,
\’
,and
\xxx
,
because the output widgets in World of Warcraft don’t support the others.
NOTE
More often than not, you will find escape codes used in localization
strings for addons. Some locales contain characters that aren’t type-able on all
keyboards, so they are inserted using the \xxx syntax. In the deDE localization for
World of Warcraft, the word Hunter is “J\195\164ger’’, which is typically
displayed as J¨ager. Localization is discussed further in Chapter 8.
Getting a String’s Length
Therearetwowaystoobtain the length of aspecific string:using the
#
operator
or using the
string.len()
function. The length of a string is often used when
validating or parsing strings.
Using the
#
operator before a string value returns the length as a number,as
shown in the following examples:
> print(#“Hello“)
5
> foo = “This is a test string“
> print(#foo)
21
Youcan use the built-in function
string.len()
to accomplish the same feat.
The period in between
string
and
len
means that this specific function is a
C# PDF insert text Library: insert text into PDF content in C#.net
int pageIndex = 0; // Move cursor to (400F, 100F). If you want to add a text string to PDF file, please try this C# demo. // Open a document.
move pages in pdf reader; rearrange pdf pages online
VB.NET PDF Library SDK to view, edit, convert, process PDF file
Rapidly and multiple PDF document (pages) creation and edit methods append, and split PDF files; insert, delete, move, rotate, copy and paste PDF file page
pdf change page order; moving pages in pdf
Chapter 2
Exploring Lua Basics
33
part of the string namespace (which youlearn more about in Chapter 4). Type
the following into your interpreter:
> foo = “This is a test string“
> print(string.len(foo))
21
It returns the same value as the
#
operator because they both use the same
underlying method to calculate the length.
Boolean Values and Operators
The
boolean
type is relatively simple and only has two possible values—
true
or
false
—but as with many things in programming, there’s more than meets
the eye. Three logical operators can be applied to Boolean values:
and
,
or
,
and
not
.
Using the and Operator
The
and
operator is true when both of its arguments are true, and false when
either of themis falseordoesn’thave avalue. Exampleshelpmakethisclearer:
> print(true and true)
true
> print(true and false)
false
> print(false and false)
false
> print(false and true)
false
This operator has one peculiarity that you might run into, illustrated by the
following example:
> print(false and “Goodbye“)
false
> print(true and “Hello“)
Hello
> print(true and 4)
4
In the first example, Lua evaluates only as much of the expression as
necessary. The
and
operator is being used, and it encounters a false value, so
it simply returns false without evaluating the rest of the expression (referred
to as short-circuit evaluation). In the last two examples, Lua does something
similar: it encounters a true value, so it returns the second value as its result.
That’s because the expression
true and value
evaluates to
true
if and only if
value
itself would evaluate to
true
.
VB.NET PDF File & Page Process Library SDK for vb.net, ASP.NET
Certainly, random pages can be deleted from PDF file as well. PDF Page sorting. RasterEdge XDoc.PDF allows you to easily move PDF document pages position in VB
move pdf pages in preview; how to reorder pdf pages
C# PDF Library SDK to view, edit, convert, process PDF file for C#
Rapidly load, create, convert and edit PDF document (pages) in C# append, and split PDF files; insert, delete, move, rotate, copy and paste PDF file page.
how to move pages in pdf acrobat; how to move pages in pdf reader
34
Part I
Learning to Program
Using the or Operator
The
or
operator is true any timeeither ofits arguments is true. Again, a simple
set of examples should make this clear, because there are only two possible
truth values:
> print(true or true)
true
> print(true or false)
true
> print(false or false)
false
> print(false or true)
true
Thisoperatorhasalowerprecedencethanthe
and
operator,somakesureyou
are using it correctly, and include parentheses when necessary. For example:
> print(false and false or true)
true
> print(true and false or false)
false
In the first example, even though
false and false
turns out to be
false
,
it is part of a larger
or
statement, so the whole expression evaluates to
true
.
This isn’t Lua being confusing; it’s the underlying Boolean logic at play.
TIP
You can use the behavior of the and and or operators to shorten some of
your expressions if you remember how they are evaluated. These operators allow
you to make the equivalentofthe a ? b : c statement in C, using Lua. You will
encounter more useful examples of this later, buthere’s a small example:
> print(true and “Hello“)
Hello
> print(false and “Hello“ or “Azeroth!“)
Azeroth!
Negation Using the not Operator
Simply enough, if you need to turn one Boolean value into the other, toggling
it, you can use the
not
operator:
> print(not true)
false
> print(not false)
true
> print(not 4)
Chapter 2
Exploring Lua Basics
35
false
> print(not “Hello“)
false
Again, because any value in Lua that is not
false
or
nil
evaluates to
true
,
you can even negate those values.
Understanding the nil Value
Earlier in this chapter, you encountered the following error message:
stdin:1: attempt to call global 'prnit’ (a nil value)
nil
is a special thing thatmeans lack of value in Lua. This is mostoften seen
when working with variables and tables (which youlearn about in Chapter4).
Type the following into your interpreter:
> print(SomeEmptyVariable)
nil
> print(type(SomeEmptyVariable))
nil
Because you have not bound the variable
SomeEmptyVariable
to anything
yet, it holds the special value
nil
,which is of type
nil
.You can use this
knowledge to check if a variable is currently unset, as in the following
example:
> print(SomeEmptyVariable == nil)
true
> print(type(SomeEmptyVariable) == “nil“))
true
You can check to see if a value is equivalent to
nil
,using the
==
operator.
You can also check the type of the value, to see if that is
nil
.Be sure to note
the difference between the value
nil
and the string
“nil“
,because the
type()
function always returns a string.
Exploring Scope
So far, each and every variable you have declared has been a global variable,
meaning it is accessible to all other parts of your program. There is another
type of variable, which is called local, in that its visibility to the rest of the
program is limited in some way. To fully understand the difference between
global and localvariables you needtounderstandthescope (or visibilityrules)
of blocks and chunks.
36
Part I
Learning to Program
Blocks
The best way to illustrate a block is with an example, so type the following
into your Lua interpreter:
> do
>> local i = 7
>> do
>> local i = 10
>> print(“Inside: “ .. i)
>> end
>> print(“Outside: “ .. i)
>> end
Inside: 10
Outside: 7
Apart from the new keywords
do
,
end
,and
local
,you’re doing something
fairly simple here. You assign the value
7
to the variable
i
,assign the value
10
toa new variable
i
,and then printeach of themout as a string.In this case, the
do
keyword tells the interpreter to begin a block, and the
end
keyword shows
where the block ends. It might make more sense when viewed indented:
do
local i = 7
do
local i = 10
print(“Inside: “ .. i)
end
print(“Outside: “ .. i)
end
By declaring the variable
i
as local, you’ve limited its scope to the current
block, in this case, the code between within the same
do
and
end
keywords.
You can access this variable as much as you like within those boundaries, but
outside that it’s as if the variable doesn’t exist.
In addition to manually creating blocks using
do
and
end
, certain Lua
constructs such as for loops, while loops, and function definitions implicitly
begin a new block. You learn more about these constructs in Chapter 3.
NOTE
In World of Warcraft, your addons will be competing with any number of
other addons thatmay use global variables. As a result, it is considered good
practice to use local variables in many cases.
Chapter 2
Exploring Lua Basics
37
Chunks
Earlier in this chapter, you received a stack traceback with an error, and it
may have referenced the main chunk. In Lua, a chunk is either the file being
executed, or the string that is being run. Variables are also limited in scope to
their specific chunk. This means a local variable declared at the top of one file
won’t be accessible in another file (they are different chunks).
In theLua interpreter,each individual lineyoutype isits own chunk,unless
youwrapitin a block(such as the preceding
do
...
end
block). For this reason,
the following code will not work:
> local i = 10
> print(i)
nil
This is justa peculiarity of theway the Lua interpreterworks.Togetaround
this, you can use
do
.. .
end
to wrap multiple lines of code:
> do
>> local i = 10
>> print(i)
> end
10
Scope and visibility will be more important when you start working with
functions in Chapter 3, but it is important to understand the implication that
almost all variables are global, unless specified otherwise.
Summary
This chapter gave you a very broad introduction to fundamental concepts
central to the Lua programming language, including variables, values, types,
operators,and scope.Chapters 3 through 6give youa morein-depth introduc-
tion to specific aspects of the language, as it relates to World of Warcraft. The
Lua programming language is used extensively outside WoW and a number
of good reference books are available on the language as a whole.
Documents you may be interested
Documents you may be interested