c# pdf viewer open source : How to rearrange pdf pages online application software tool html winforms windows online World%20of%20Warcraft%20Programming%20(2nd%20Edition)13-part1795

Chapter 5
Advanced Functions and Control Structures
89
stack traceback:
[C]: in function 'sort'
stdin:1: in main chunk
[C]: ?
The
table.sort()
function takes a second argument specifically for this
purpose, to allow the programmer to define how values should be compared.
This function takes two arguments, and returns
true
if the first argument is
less than the second argument, and false if the second argument is less than
or equal to the first argument. That means you can sort two tables based on
their member fields, or some other criteria you specify. Write the following
function, which will compare two of the elements based on name:
function sortNameFunction(a, b)
return a.name < b.name
end
Althoughthe function is extremelyshort,that’s allthatis requiredto sortthe
array by name. Pass this function in as the second argument to
table.sort()
:
> table.sort(guild, sortNameFunction)
> for idx, value in ipairs(guild) do
>> print(idx, value.name)
>> end
1, Cladhaire
2, Deathsquid
3, Draoi
To reverse the sort order, just reversethe order of the comparison (note that
the position of
b.name
and
a.name
in the comparison have changed):
function sortNameFunctionDesc(a, b)
return b.name < a.name
end
Sort with this new function:
> table.sort(guild, sortNameFunctionDesc)
> for idx, value in ipairs(guild) do print(idx, value.name) end
1, Draoi
2, Deathsquid
3, Cladhaire
Creating a More Complex Sort Function
Assume you’d like to sort the preceding data by level and then by character
name. You can write a function to sort by level, but there’s no way to tell in
How to rearrange pdf pages online - re-order PDF pages in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Support Customizing Page Order of PDF Document in C# Project
reorder pages in pdf online; reordering pages in pdf
How to rearrange pdf pages online - 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
how to reorder pdf pages; how to rearrange pages in a pdf file
90
Part I
Learning to Program
what order it will put the two level 80 characters. The following comparison
function accomplishes this more complex sort:
function sortLevelNameAsc(a, b)
if a.level == b.level then
return a.name < b.name
end
return a.level < b.level
end
All that is required is a simple check to see if the two levels are the same,
and if they are, to compare the names of the characters. A sort function can
be as complex as you need, as long as it returns
true
when the first argument
should be sorted less than the second argument:
> table.sort(guild, sortLevelNameAsc)
> for idx,value in ipairs(guild) do print(idx, value.name, value.level) end
1, Deathsquid, 68
2, Cladhaire, 80
3, Draoi, 80
Summary
This chapter introduced the concepts of vararg functions, generic
for
loops,
iterators, and sorting complex data in arrays. These concepts are relatively
advanced, but come up often when designing and writing a new addon.
C# TIFF: How to Reorder, Rearrange & Sort TIFF Pages Using C# Code
C# TIFF - Sort TIFF File Pages Order in C#.NET. Reorder, Rearrange and Sort TIFF Document Pages in C#.NET Application. C# TIFF Page Sorting Overview.
how to rearrange pages in pdf document; pdf reorder pages online
Online Merge PDF files. Best free online merge PDF tool.
Then press the button below and download your PDF. By dragging your pages in the editor area you can rearrange them or delete single pages.
how to rearrange pdf pages in preview; how to move pages in pdf
CH A P T E R
6
Lua Standard Libraries
Throughout the first part of this book, a number of Lua standard library
functions have been introduced and used in code examples. Although this
book does not cover every single Lua function included in the World of
Warcraft implementation of Lua, this chapter introduces you to the some of
the most prevalent functions that you will need when developing addons.
In addition to the Lua standardlibraries, this chapter covers some functions
specific to WoW that aren’t really part of the game API itself. These functions
are grouped at the end of the chapter.
NOTE
The details in this chapter cover the parts ofthe Lua API that are most
relevantto WoW. You can find a full reference for Lua online at
http://lua.org/manual/5.1. This manual is also available in print: Lua 5.1
Reference Manual by R. Ierusalimschy, L. H. de Figueiredo, and W. Celes, Lua.org,
August 2006 (ISBN 85-903798-3-3).
In addition, the chief architectofLua has written an easy-to-read book about the
Lua programming language that covers these (and more) functions in depth. You
can find a version ofthis book written for an older version of Lua at
http://lua.org/pil. Ifreading the older version is confusing, you can find the
second edition at many online bookstores: Programming in Lua (second edition)
by Roberto Ierusalimschy, Lua.org, March 2006 (ISBN 85-903798-2-5).
Each function is this chapter is presented with what is called the function’s
signature. A function signature describes what values are returned by the
function, as well as what arguments are taken by the function. For example,
consider the fictional function
foo()
:
someReturn = foo(arg1, arg2)
91
VB.NET TIFF: Modify TIFF File by Adding, Deleting & Sort TIFF
you want to change or rearrange current TIFF &ltsummary> ''' Sort TIFF document pages in designed powerful & profession imaging controls, PDF document, image
how to move pages within a pdf document; how to reorder pages in pdf file
VB.NET PDF File & Page Process Library SDK for vb.net, ASP.NET
a PDF document which is out of order, you need to rearrange the PDF you with examples for adding an (empty) page to a PDF and adding empty pages to a
how to move pages in pdf reader; moving pages in pdf
92
Part I
Learning to Program
In this example, the function
foo()
takes two arguments (
arg1
and
arg2
)
and returns a single value
someReturn
. These signatures can also indicate
optional arguments, by enclosing themin square brackets:
somereturn = foo(arg1 [, arg2])
This notation indicates that thesecond argument to
foo()
is optional.When
you seethis,you should consultthe description ofthe function andarguments
to determine the behavior of the function because it varies.
Table Library
The table library provides several functions that allow you to easily add
elements,remove elements,andsort arraytables.In addition, autilityfunction
is provided that works outside of the array part of the table, returning the
maximum numeric index used in the table. The former functions all operate
exclusively on the array part of the table, whereas the latter can be used on
any type of table.
str = table.concat (table [, sep [, i [, j]]])
The
table.concat()
function concatenates all entries of the array part of
a table, with an optional separator string sep. Given an array where all
elements are strings or numbers, it returns
table[i]..sep..table[i+1] ...
sep..table[j]
.The default value for
sep
is the empty string, the default for
i
is 1, and the default for
j
is the length of the table. If
i
is greater than
j
,it
returns the empty string.
> tbl = {“alpha“, “beta“, “gamma“}
> print(table.concat(tbl, “:“))
alpha:beta:gamma
> print(table.concat(tbl, nil, 1, 2))
alphabeta
> print(table.concat(tbl, “\n“, 2, 3))
beta
gamma
This function is an easy way to print the elements of the array part of a
table. As you can see,
sep
can be any string (including the newline character)
because it’s just concatenated with the entries in the table.
table.insert (table, [pos,] value)
The
table.insert()
function inserts a new element into the array, optionally
at position pos, shifting other elements up to make space, if necessary. The
default value for
pos
is n+1,where n is the length ofthe table.Therefore, a call
of
table.insert(t,x)
inserts
x
at the end of table t.
C# PowerPoint - How to Process PowerPoint
the simplest procedures, for instance, using online clear C# out useless PowerPoint document pages simply with solution to sort and rearrange PowerPoint slides
reorder pdf pages; reorder pdf page
VB.NET Word: How to Process MS Word in VB.NET Library in .NET
well programmed Word pages sorter to rearrange Word pages in extracting single or multiple Word pages at one & profession imaging controls, PDF document, image
reorder pages in pdf document; pdf move pages
Chapter 6
Lua Standard Libraries
93
> tbl = {“alpha“, “beta“, “gamma“}
> table.insert(tbl, “delta“)
> table.insert(tbl, “epsilon“)
> print(table.concat(tbl, “, “))
alpha, beta, gamma, delta, epsilon
> table.insert(tbl, 3, “zeta“)
> print(table.concat(tbl, “, “))
alpha, beta, zeta, gamma, delta, epsilon
max = table.maxn (table)
The
table.maxn()
function returns the largest positive numerical index of the
given table, or zero if the table has no positive numerical indices. To do its
job, this function does a linear traversal of the entire table. Unlike most table
functions,
table.maxn()
considers numerical keys instead of integer keys, so
numerical constants and rational numbers are counted as well.
> tbl = {[1] = “a“, [2] = “b“, [3] = “c“, [26] = “z“}
> print(#tbl)
3
> print(table.maxn(tbl))
26
> tbl[91.32] = true
> print(table.maxn(tbl))
91.32
value = table.remove (table [, pos])
The
table.remove()
functionremovesanelementfromthegiventable,shifting
down other elements toclose the space,if necessary. It returns thevalue of the
removed element. The default value for
pos
is n, where n is the length of the
table, so a call
table.remove(t)
removes the last element of table t.
> tbl = {“alpha“, “beta“, “gamma“, “delta“}
> print(table.remove(tbl))
delta
> print(table.concat(tbl, “, “))
alpha, beta, gamma
table.sort (table [, comp])
The
table.sort()
function sorts the array part of a table by reordering the
elements within the same table. If
comp
is given, it must be a function that
receives two table elements and returns
true
when the first is less than the
second (so that
not comp(a[i+1],a[i])
will be
true
after the sort for all
i
). If
comp
is not given, the standard Lua operator
<
is used instead.
Process Images in Web Image Viewer | Online Tutorials
used document types are supported, including PDF, multi-page easy to process image and file pages with the deleting a thumbnail, and you can rearrange the file
reorder pdf pages reader; how to reorder pages in pdf reader
VB.NET PowerPoint: Sort and Reorder PowerPoint Slides by Using VB.
page will teach you to rearrange and readjust amount of robust PPT slides/pages editing methods and powerful & profession imaging controls, PDF document, image
change pdf page order online; pdf reverse page order preview
94
Part I
Learning to Program
This sort algorithm is not stable, which means that elements considered
equal by the given comparison function may have their order changed by
the sort.
> tbl = {“alpha“, “beta“, “gamma“, “delta“}
> table.sort(tbl)
> print(table.concat(tbl, “, “))
alpha, beta, delta, gamma
> sortFunc = function(a,b) return b < a end
> table.sort(tbl, sortFunc)
> print(table.concat(tbl, “, “))
gamma, delta, beta, alpha
String Utility Functions
Lua provides several utility functions for working with and manipulating
strings. Each of these functions is available as object-oriented method calls,
as well as the library calls themselves. For example, the following two calls
accomplish the same thing:
> str = “This is a string“
> print(string.len(str))
16
> print(str:len())
16
Table 6-1 describes the various utility functions and illustrates their use.
Table 6-1: String Utility Functions
FUNCTION
DESCRIPTION
EXAMPLE(S)
string.len(s)
Receives a string and
returns its length.
The empty string ““
has length 0.
Embedded zeros are
counted, so
“a\000bc\000“
has length 5.
> print(string.len(“Monkey“))
5
string.lower(s)
Returns the input
string with all
uppercase letters
changed to
lowercase. All other
characters are left
unchanged. The
definition of what an
uppercase letter is
depends on the
current locale.
> test = “Hello World!“
> print(string.lower(test))
hello world!
> printtest:lower())
hello world!
Chapter 6
Lua Standard Libraries
95
FUNCTION
DESCRIPTION
EXAMPLE(S)
string.rep(s, n)
Returns a string that is
the concatenation of n
copies of the string s.
> print(string.rep(“Hello“, 3))
HelloHelloHello
> test = “foo“
> print(test:rep(3))
foofoofoo
string.reverse(s) Returns a string that is
the string s reversed.
> print(string.reverse(“Test“))
tseT
> test = “Hello World!“
> print(test:reverse())
!dlroW olleH
string.sub(s, i
[, j])
Returns the substring
of s that starts at i and
continues until j; i and
jmay be negative. If j
is absent, it is assumed
to be equal to -1
(which is the same as
the string length). In
particular, the call
string.sub(s,1,j)
returns a prefix of s
with length j, and
string.sub(s, -i)
returns a suffix of s
with length i.
> test = “Hello World“
> print(string.sub(test, 1, 3))
Hel
> print(test:sub(1, -1))
Hello World
> print(test:sub(-3, -1))
rld
string.upper(s)
Receives a string and
returns a copy of this
string with all
lowercase letters
changed to uppercase.
All other characters are
left unchanged. The
definition of what a
lowercase letter is
depends on the
current locale.
> test = “Hello World!“
> print(string.upper(test))
HELLO WORLD!
> print(test:upper())
HELLO WORLD!
Formatting New Strings
Throughout the book, you’ve used the concatenation operator to make new
strings and format longer messages. This code to generate longer strings ends
up being extremely difficult to read, and difficult to maintain. Lua provides a
utility function called
string.format(formatstring, ...)
that will format a
list of arguments according to a defined format.
96
Part I
Learning to Program
Aformat string can contain literal characters and special conversion codes
that are used along with the arguments to create the final result. Conversion
codes begin with a percent sign (
%
)and contain one of the following specifiers
that indicate what type of data the argument should be treated as:
%c
—Takes a numberargument and formats it as the ASCII character that
corresponds to the number.
%d, %i
—Takes a number argument and formats it as a signed integer.
%o
—Takes a number argument and formats it as an octal number.
%u
—Takes a number argument and formats it as an unsigned integer.
%x
—Takes a number argument and formats it as a hexadecimal number,
using lowercase letters.
%X
—Takes a number argument and formats it as a hexadecimal number,
using capital letters.
%e
—Takes a number argument and formats it as scientific notation, with
alowercase e.
%E
—Takes a number argument and formats it as scientific notation, with
an uppercase E.
%f
—Takes a numberargumentand formats it asa floating-pointnumber.
%g
and
%G
—Takes a number and formats it according to either
%e
(or
%E
if
%G
is specified) or
%f
,depending on which is shortest.
%q
—Formats a string so it can safely be read back into a Lua interpreter.
%s
—Takes a string and formats it according to the supplied options.
Several options can be used in a conversion specification between the
percent sign and the type specifier. The following options can be included, in
this specific order:
1. Sign specification (eithera + or a –) that causes a sign to be printed with
any number. By default, the sign is only printed with negative numbers.
2. A padding character (either a space, or a 0) that will be used when
padding the result to the correctstringwidth. By default, any results will
be paddedwith spaces to meet the correct width, if specified.
3. An alignment specification that causes the result to be left-justified or
right-justified. The default is right-justification, whereas a – character
will make the result left-justified.
4. A width specification that specifies the minimum width of the resulting
string.
5. A precision specification that dictates how many decimal digits should
be displayed when formatting a floating-point number. When speci-
fied for strings, the resulting string will be cut off at this number of
characters.
Chapter 6
Lua Standard Libraries
97
Confused yet? More often than not, you’ll only use a very small subset of
these options, but it’s good to understand the abilities and limitations of the
string formatting system. The examples in Table 6-2 should help clarify the
basics of string formatting.
Table 6-2: Example Format Strings
COMMAND
RESULT
string.format(“%%c: %c“, 83)
%c: S
string.format(“%+d“, 17.0)
+17
string.format(“%05d“, 17)
00017
string.format(“%o“, 17)
21
string.format(“%u“, 3.14)
3
string.format(“%x“, 13)
D
string.format(“%X“, 13)
D
string.format(“%e“, 1000)
1.000000e+03
string.format(“%E“, 1000)
1.000000E+03
string.format(“%6.3f“, 13)
13.000
string.format(“%q“, [[“One“, “Two“]])
“\“One\“, \“Two\““
string.format(“%s“, “monkey“)
monkey
string.format(“%10s“, “monkey“)
monkey
string.format(“%5.3s“, “monkey“)
mon
IN WORLD OF WARCRAFT
WoW includes an extra option for string.format() that allows you to
choose a specific argument from the argument list, rather than having them
in consecutive order. This option is not included in standard Lua 5.1, so you
will need to use one of the interpreters provided on the book’s website
(http://wowprogramming.com/utils) to test this. If you are using the
WoWLua addon, it should work correctly.
To select a specific argument, include the number of the argument, followed
by the dollar sign ($), immediately after the percent sign (%). For example:
> print(string.format(“%2$d, %1$d, %d“, 13, 17))
17, 13, 17
The first type identifier is modified to request the second argument, and the
second identifier consumes the second argument to the format string. When
selecting parameters in this way, you can’t skip any and leave them unused.
(continued)
98
Part I
Learning to Program
IN WORLD OF WARCRAFT (continued)
If you use parameters 1 and 3, you must also use parameter 2. You can mix
parameter selection and normal type identifiers in the same format string
without any issues.
WoW specifically includes this functionality to provide support for multiple
languages. For example, the following string appears in English:
Cladhaire’s Shadow Word: Pain is removed.
In German, the phrase used in this same situation is:
’Shadow Word: Pain’ von Cladhaire wurde entfernt.
As you can see, the order of the arguments is swapped based on the way
the phrase is constructed for German clients. Without parameter selection,
WoW would have to handle each of these cases specifically, which would get
very messy. Instead, the client uses string.format() along with parameter selec-
tion to craft these messages.
The English format string is “%s’s %s is removed.“, and the German for-
mat string is “’%2$s’ von %1$s wurde entfernt.“. Rather than maintain
along list of special messages, format strings are used to make the client
consistent.
Pattern Matching
Acommon theme you will find when writing addons is the need to match
and parse text supplied by the game against a given pattern. Lua provides a
number of utility functions to accomplish these tasks. These functions can use
patterns to describe what to search for when matching against a given string.
Character Classes
Patterns can use any of the character classes described in Table 6-3. Each class
is designed to match a subset of all characters in a specific way. For example,
the character class
%s
can be used to match any whitespace character, and
%a
can be used to represent any letter.
In addition, with any of the character classes that have a percent sign
followed by a letter, the letter can be changed to uppercase to serve as a
shortcut for the complement to the character class. In other words,
%S
will
match any character that is not a space, and
%A
will match any character that
is not a letter.
Take a look at some examples. Given the test string
“abc ABC 123 !@# \n
\000 %“
,Table 6-4 shows what will be matched by a given pattern.
Documents you may be interested
Documents you may be interested