c# pdf viewer open source : Move pages in pdf document software application dll windows winforms wpf web forms World%20of%20Warcraft%20Programming%20(2nd%20Edition)14-part1806

Chapter 6
Lua Standard Libraries
99
Table 6-3: Character Classes
CLASS
MATCHES
x(where x is not one of the
magic characters
ˆ$()%.[]*+-?)
The character x itself.
.(period, or full stop)
Any character.
%a
Any letter.
%c
Any control character.
%d
Any digit.
%l
Any lowercase letter.
%p
Any punctuation character.
%s
Any space character.
%u
Any uppercase letter.
%w
Any alphanumericcharacter.
%x
Any hexadecimal digit.
%z
The character with representation 0 (for
example,\000).
%x (where x is any
non-alphanumeric character)
Represents the character x. This is the standard
wayto escape the magic characters. Any
punctuation character (even the non-magic
ones) can be preceded by a % when used to
represent itself in a pattern. For example, to
include a percent sign in the resulting string you
would include %% in the format string.
[set]
Any characters included in set, which can be
specified as a range of characters by listing the
range with a hyphen (such as A-Z). All classes
defined in this tablemay also be used as a part
of set, including the other characters, which just
represent themselves. For example, [%w_]
matches all alphanumeric characters plus the
underscore character, and [0-9%l%-] matches
all digits plus the lowercase letters and the -
character.
[ˆ set]
The complement of any set (as previously
defined). Therefore, [ ˆ %s] matches any
non-space character.
Move pages in pdf document - re-order PDF pages in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Support Customizing Page Order of PDF Document in C# Project
how to move pages in a pdf file; reorder pages in pdf preview
Move pages in pdf document - 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 document; pdf change page order acrobat
100
Part I
Learning to Program
Table 6-4: Example Patterns
PATTERN
STRING MATCHED
“a“
a
“.“
a
“%a“
a
“%c“
\n
“%d“
1
%l“
a
%p
!
%s
space
%u
A
%w
a
%x
a
%z
\000
%%
%
Pattern Items
Each of the character classes previously defined can be used in the pattern
items described in Table 6-5.
Table 6-5: Using Pattern Items
PATTERN
MATCHES
Asingle character class
followed by a -
Zero or more repetitions of characters in the class. Unlike *,
these repetition items always match the shortest possible
sequence.
Asingle character class
Any single character in the class.
Asingle character class
followed by an *
Zero or more repetitions of a character in the class. These
repetition items always match the longest possible
sequence.
Asingle character class
followed by a +
One or more repetitions of characters in the class. These
repetition items always match the longest possible
sequence.
Asingle character class
followed by a ?
Zero or one occurrence of a character in the class. This will
always match one occurrence if it is possible to do so.
C# TIFF: How to Reorder, Rearrange & Sort TIFF Pages Using C# Code
Reorder, Rearrange and Sort TIFF Document Pages in C#.NET Application. this C#.NET Tiff image management library, you can easily change and move the position of
how to move pages in a pdf document; change pdf page order
C# Word - Sort Word Pages Order in C#.NET
adjust the order of all or several Word document pages, or just page inserting, Word page deleting and Word document splitting C# DLLs: Move Word Page Position.
how to reorder pdf pages; reorder pages pdf file
Chapter 6
Lua Standard Libraries 101
PATTERN
MATCHES
%n
For n between 1 and 9; matches a substring equal to the
nth captured string (see the section later in this chapter on
captures).
%bxy, where x and y
are two distinct
characters
Strings that start with x, end with y, and where the x and y
are balanced. This means that if you read the string from
left to right, counting +1 for an x and -1 for a y, the ending
yis the first y where the count reaches 0. For instance, the
item %b() matches expressions with balanced parentheses.
These pattern items can be very simple to use when you need to match a
specific part of a string in a very general way. Table 6-6 gives a number of
example patterns and the corresponding matches when run against the string
“abc ABC 123 !@# \n \000 %“
.
Table 6-6: Example Patterns
PATTERN
STRING MATCHED
%a
a
%a*
abc
%a+
abc
%a-
no string matched
%a-%s
abc
%a?
a
%ba3
abc ABC 123
Pattern Captures
Apattern can contain sub-patterns enclosed in parentheses, called captures.
When a match succeeds, the part of the pattern enclosed in parentheses is
stored (captured) for future use. Captures are numbered according to the
order of their left parenthesis because they can be nested. For instance, in the
pattern
“(a*(.)%w(%s*))“
,the part of the string matching
“a*(.)%w(%s*)“
is stored as the first capture (with number 1); the character matching
“.“
is
captured as number 2, and the part matching
“%s*“
has number 3.
Additionally, the empty capture
()
captures the current string position
(a number). For instance, if you apply the pattern
“()aa()“
on the string
“flaaap“
,there will be two captures, the number 3 and the number 5.
C# PowerPoint - Sort PowerPoint Pages Order in C#.NET
the order of all or several PowerPoint document pages, or just PowerPoint page deleting and PowerPoint document splitting C# DLLs: Move PowerPoint Page Position.
pdf change page order online; how to reorder pages in pdf file
C# PDF File & Page Process Library SDK for C#.net, ASP.NET, MVC
RasterEdge XDoc.PDF allows you to easily move PDF document pages position, including sorting pages and swapping two pages. Copying and Pasting Pages.
reorder pages in pdf document; reordering pdf pages
102
Part I
Learning to Program
Pattern Anchors
Apattern is quite literally a sequence of characters to be matched. Using
ˆ
at
the beginning of a pattern can match the beginning of a string, whereas using
$
at the end of a pattern can match the end of a string. When used anywhere
else in the pattern, these strings will match their literal equivalent. Anchors
can be used to make a pattern more explicit.
Pattern Examples
Table 6-7 illustrates a number of common requirements for pattern matching
and shows what that pattern might look like.These are general examples and
may only work in specific cases.
Table 6-7: Example Patterns
REQUIREMENT
PATTERN
Match a non-space token in a string.
“%S+“
Match a string beginning with the text MYADDON:
followed by at least one character, capturing therest of
the string.
“ˆ MYADDON:(.+)“
Match a number, optionally with a fractional part after a
decimal point, capturing the entire number. The number
can be positive or negative.
“(%-?%d+%.?%d*)“
Match an assignment in the form xxxx=yyyy, where xxxx
is alphanumeric and yyyy contains no spaces, and
capture each individually.
“(%w+)=(%S+)“
Match a single quoted string, such as 'foo' and 'bar'.
“%b’’“
Match the last nonspace token in a string.
“%S+$“
Pattern Matching Functions
Lua provides four functions that accept pattern strings:
string.gmatch(s, pattern)
string.gsub(s, pattern, repl [, n])
string.match(s, pattern [, init])
string.find(s, pattern [, init [, plain]])
C# PDF insert text Library: insert text into PDF content in C#.net
int pageIndex = 0; // Move cursor to (400F, 100F). aChar, font, pageIndex, cursor); // Output the new document. Program.RootPath + "\\" output.pdf"; doc.Save
reordering pages in pdf document; move pages within pdf
C# PDF Page Insert Library: insert pages into PDF file in C#.net
Support adding and inserting one or multiple pages to existing PDF document. Add and Insert Multiple PDF Pages to PDF Document Using C#.
change page order in pdf reader; move pdf pages online
Chapter 6
Lua Standard Libraries 103
These functions are also available as object-oriented method calls on the
string itself, as with the utility functions discussed earlier. Each of them
accomplishes a different task for strings, as you’ll see.
string.gmatch(s, pattern)
The
string.gmatch(s, pattern)
function returns an iterator function that,
each timeitiscalled,returns the nextsetofcapturesfrom
pattern
overstring
s
.
If
pattern
specifies no captures, the entire match is produced in each call.
For example, the following loop iterates over all the words from string
s
,
printing one per line:
> s = “hello world from Lua“
> for word in string.gmatch(s, “%a+“) do
>> print(word)
>> end
hello
world
from
Lua
And here’s an example that collects all sets of key=value pairs from the
given string into a table:
> t = {}
> s = “from=world, to=Lua“
> for k, v in string.gmatch(s, “(%w+)=(%w+)“) do
>> t[k] = v
>> end
> for k,v in pairs(t) do
>> print(k, v)
>> end
to, Lua
from, world
When working with
string.gmatch()
, remember that the pattern is
designed to potentially match more than one occurrence, so the pattern
shouldn’t be anchored too heavily (in particular, using the
ˆ
and
$
anchors
would make the preceding example work incorrectly).
string.gsub(s, pattern, repl [, n])
The
string.gsub(s, pattern, repl [, n])
function returns a copy of
s
in
which all (or the firstn
,ifgiven)occurrences of the pattern have been replaced
by a replacement string specified by
repl
,which may be a string, a table, or a
VB.NET PDF Page Insert Library: insert pages into PDF file in vb.
Able to add and insert one or multiple pages to existing adobe PDF document in VB.NET. Add and Insert Multiple PDF Pages to PDF Document Using VB.
reorder pdf page; how to move pages in a pdf document
C# PDF Library SDK to view, edit, convert, process PDF file for C#
load, create, convert and edit PDF document (pages) in C# PDF files; insert, delete, move, rotate, copy and robust APIs for editing PDF document hyperlink (url
pdf rearrange pages; change page order pdf
104
Part I
Learning to Program
function.
string.gsub()
also returns as its second value the total number of
matches that occurred.
If
repl
is a string, its value is used for replacement. The character
%
works
as an escape character: any sequence in
repl
of the form
%n
,with
n
between
1and 9, stands for the value of the
n
th
captured substring (see the following
example).Thesequence
%0
standsfor the whole match.Thesequence
%%
stands
for a single %.
If
repl
is a table, the table is queried for every match, using the first capture
as the key; if the pattern specifies no captures, the whole match is used as
the key.
If
repl
is a function, this function is called every time a match occurs, with
all captured substrings passed as arguments, in order. If the pattern specifies
no captures, the whole match is passed as the argument.
If the value returned by the table query or by the function call is a string or
anumber, it is used as the replacement string; otherwise, if it is
false
or
nil
,
there is no replacement (that is, the original match is kept in the string).
Here are some examples:
> print(string.gsub(“hello world“, “(%w+)“, “%1 %1“))
hello hello world world, 2
> print(string.gsub(“hello world“, “%w+“, “%0 %0“, 1))
hello hello world, 1
> print(string.gsub(“hello Lua“, “(%w+)%s*(%w+)“, “%2 %1“))
Lua hello, 1
> lookupTable = {[“hello“] = “hola“, [“world“] = “mundo“}
> function lookupFunc(pattern)
>> return lookupTable[pattern]
>> end
> print(string.gsub(“hello world“, “(%w+)“, lookupTable))
hola mundo, 2
> print(string.gsub(“hello world“, “(%w+)“, lookupFunc))
hola mundo, 2
string.match(s, pattern [, init])
The
string.match(s, pattern [, init])
function looks forthe first match of
pattern
in the string
s
.If it finds one, the match returns the captures from the
pattern; otherwise, it returns
nil
.If
pattern
specifies no captures, the whole
match is returned. A third, optional numerical argument—
init
—specifies
where to start the search; its default value is
1
and may be negative.
string.find(s, pattern [, init [, plain]])
The
string.find(s, pattern [, init [, plain]])
function looks for the
firstmatch of
pattern
in the string
s
.If itfinds a match,findreturns the indices
of
s
where this occurrence starts and ends; otherwise, it returns
nil
.A third,
Chapter 6
Lua Standard Libraries 105
optional numerical argument—
init
—specifies where to start the search; its
default value is 1 and may be negative. A value of
true
as a fourth, optional
argument,
plain
,turns off the pattern matching facilities, so the function
does a plain ‘‘find substring’’ operation, with no characters in pattern being
considered ‘‘magic.’’ Note that if
plain
is given,
init
must also be given.
If the pattern has captures, then in a successful match the captured values
are also returned, after the two indices.
Math Library
The math library provides an interface to several standard math functions and
constants. Table 6-8 describessome of themorecommon functions in the math
library. (It is not a full listing of the library; for that, please consult a proper
Lua reference, which includes a full set of trigonometric functions such as
math.cos, math.sin, math.tan, and so on.)
Table 6-8: Math Functions
FUNCTION
DESCRIPTION
EXAMPLE
math.abs(x)
Returns the absolute
value of x.
> print(math.abs(13))
13
> print(math.abs(-13))
13
math.ceil(x)
Returns the smallest
integer larger than or
equal to x.
> print(math.ceil(1.03))
2
> print(math.cell(13))
13
> print(math.cell(17.99))
18
math.deg(x)
Returns the angle x
(given in radians) in
degrees.
> print(math.deg(math.pi))
180
> print(math.deg(math.pi * 2.5))
450
math.exp(x)
Returns the value of the
mathematical constant
eraised to the x power.
> print(math.exp(27))
532048240601.8
math.floor(x)
Returns the largest
integer smaller than or
equal to x.
> print(math.floor(1.03))
1
> print(math.floor(13.0))
13
> print(math.floor(17.99)
17
Continued
106
Part I
Learning to Program
Table 6-8: (continued)
FUNCTION
DESCRIPTION
EXAMPLE
math.fmod(x, y)
Returns the remainder
of thedivision of x by
y, rounding the
quotient toward
zero.
> print(math.fmod(14, 3))
2
> (print(math.fmod(14, 2))
0
math.log(x)
Returns the natural
logarithm of x.
> print(math.log(532048240601.8))
27
math.log10(x)
Returns the base-10
logarithm of x.
> print(math.log10(10 ˆ2))
2
math.max(x, y,
z, ...)
Returns the maximum
value among its
arguments.
> print(math.max(-13, 7, 32))
32
math.min(x, y,
z, ...)
Returns the minimum
value among its
arguments.
> print(math.min(-13, 7, 32, 17))
-13
math.modf(x)
Returns two numbers,
the integral part of x
and the fractional part
of x.
> print(math.modf(10.23))
10, 0.23
> print(math.modf(7/22))
0, 0.31818181818182)
math.pi
The value of the
mathematical constant
pi.
> print(math.pi)
3.1415926535898
math.pow(x, y)
Returns x raised to the
ypower. (You can also
use the expression x ˆ y
to compute this value.)
> print(math.pow(2, 10))
1024
> print(math.pow(2, -10))
0.0009765625
math.rad(x)
Returns the angle x
(given in degrees) in
radians.
> print(math.rad(180))
3.1415926535898
> print(math.rad(180) == math.pi)
true
> print(math.rad(450))
7.8539816339745
math.random([m
[, n]])
Generates
pseudo-random
numbers. The numbers
generated may not be
sufficient for statistical
analysis but provide an
easy way to create
pseudo-randomness in
> print(math.random())
7.8263692594256e-06
> print(math.random(100))
14
> print(math.random(10, 20))
18
Chapter 6
Lua Standard Libraries 107
FUNCTION
DESCRIPTION
EXAMPLE
aprogram. For
example, this function
can be used along with
the
SendChatMessage()
World of Warcraft API
function to allow your
character to make
random sayings based
on certain events.
When called without
arguments, returns a
pseudo-random real
number between 0 and
1(not including 1).
When called with a
number m, returns a
pseudo-random integer
between and including
1and m. When called
with two numbers m
and n, returns a
pseudo-random integer
between and including
mand n.
math.randomseed
(x)
The pseudo-random
number generator used
by Lua takes an initial
seed and generates a
sequence of numbers
based on that seed. As
aresult, the same initial
seed will always
produce the same
sequence. This function
has been removed from
the Lua implementation
in World of Warcraft,
but is listed here for
completeness.
> math.randomseed(1000)
> print(math.random(100))
1
> print(math.random(100))
54
> print(math.random(100))
61
> -- reset the seed
> math.randomseed(1000)
> print(math.random(100))
1
> print(math.random(100))
54
> print(math.random(100))
61
math.sqrt(x)
Returns the square root
of x. (You can also use
the expression x ˆ 0.5
to compute this value.)
> print(math.sqrt(169)
13
> print(math.sqrt(2))
1.4142135623731
> print(2 ˆ 0.5)
1.4142135623731
108
Part I
Learning to Program
NOTE
Lua doesn’t include a math.round() function because there are so many
possible variations on whatitmeans to ‘‘round’’ a number. http://lua-users.
org/wiki/SimpleRound shows how to implement the following function, which
rounds a number to a given decimal place:
function round(num, idp)
local mult = 10ˆ(idp or 0)
return math.floor(num * mult + 0.5) / mult
end
World of Warcraft Additions to Lua
Several functions have been added to the Lua implementation in WoW as
utility functions for developers:
strsplit(sep, str)
strjoin(sep, ...)
strconcat(...)
getglobal(name)
setglobal(name, value)
debugstack([start[, count1[, count2]]])
These functions are available in the WowLua addon, on the WebLua
webpage, and in the interpreters that are available for download via the
book’s companion website. They may not be available in Lua distributions
obtained elsewhere.
strsplit(sep, str)
takes a given string
str
and splits it into separate
strings on each occurrence of any character in the separator string
sep
.This
function returns each individual string (with separator characters removed)to
the caller.
> print(strsplit(“:“, “foo:bar:blah“))
foo, bar, blah
> print(strsplit(“ “, “This is a string“))
This, is, a, string
The
strjoin(sep, ...)
function takes a list of strings and concatenates
them together with the separatorstring
sep
,returning the result.
> print(strjoin(“ “, “This“, “is“, “a“, “test“, “string“))
This is a test string
> print(strjoin(“, “, “alpha“, “beta“, “gamma“))
alpha, beta, gamma
The
strconcat(...)
function takes a list of strings and concatenates them
together into one long string, which is returned.
> print(strconcat(“This“, “is“, “a“, “test“))
Thisisatest
Documents you may be interested
Documents you may be interested