summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/generic/pgf/graphdrawing/lua/pgf/gd/lib.lua
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/generic/pgf/graphdrawing/lua/pgf/gd/lib.lua')
-rw-r--r--Master/texmf-dist/tex/generic/pgf/graphdrawing/lua/pgf/gd/lib.lua94
1 files changed, 40 insertions, 54 deletions
diff --git a/Master/texmf-dist/tex/generic/pgf/graphdrawing/lua/pgf/gd/lib.lua b/Master/texmf-dist/tex/generic/pgf/graphdrawing/lua/pgf/gd/lib.lua
index cc39ddd6070..bcd4f6cfc1e 100644
--- a/Master/texmf-dist/tex/generic/pgf/graphdrawing/lua/pgf/gd/lib.lua
+++ b/Master/texmf-dist/tex/generic/pgf/graphdrawing/lua/pgf/gd/lib.lua
@@ -67,7 +67,7 @@ end
function lib.find_min(array, f)
local best = math.huge
local best_result
- local best_index
+ local best_index
for i=1,#array do
local t = array[i]
local result, p = f(t,i,array)
@@ -89,9 +89,9 @@ end
-- Copies a table while preserving its metatable.
--
-- @param source The table to copy.
--- @param target The table to which values are to be copied or |nil| if a new
+-- @param target The table to which values are to be copied or |nil| if a new
-- table is to be allocated.
---
+--
-- @return The |target| table or a newly allocated table containing all
-- keys and values of the |source| table.
--
@@ -110,10 +110,10 @@ end
-- Copies an array while preserving its metatable.
--
-- @param source The array to copy.
--- @param target The array to which values are to be copied or |nil| if a new
+-- @param target The array to which values are to be copied or |nil| if a new
-- table is to be allocated. The elements of the
-- |source| array will be added at the end.
---
+--
-- @return The |target| table or a newly allocated table containing all
-- keys and values of the |source| table.
--
@@ -129,7 +129,7 @@ end
---
--- Apply a function to all pairs of a table, resulting in a new table.
+-- Apply a function to all pairs of a table, resulting in a new table.
--
-- @param source The table.
-- @param fun A function taking two arguments (|val| and |key|, in
@@ -140,7 +140,7 @@ end
-- takes only a single argument and returns only a single argument,
-- you have a ``classical'' value mapper. Also note that if
-- |new_value| is |nil|, the value is removed from the table.
---
+--
-- @return The new table.
--
function lib.map(source, fun)
@@ -159,7 +159,7 @@ end
---
-- Apply a function to all elements of an array, resulting in a new
--- array.
+-- array.
--
-- @param source The array.
-- @param fun A function taking two arguments (|val| and |i|, the
@@ -169,14 +169,14 @@ end
-- element is skipped. If this function is not provided (is |nil|),
-- the identity function is used.
-- @param new The target array (if |nil|, a new array is create).
--- %
+--
--\begin{codeexample}[code only]
-- local a = lib.imap(array, function(v) if some_test(v) then return v end end)
--\end{codeexample}
--
-- The above code is a filter that will remove all elements from the
-- array that do not pass |some_test|.
--- %
+--
--\begin{codeexample}[code only]
-- lib.imap(a, lib.id, b)
--\end{codeexample}
@@ -238,27 +238,23 @@ end
-- option table of an object contains the name field is done using
-- |rawget| for all but the last parameter. This means that when you
-- write
--- %
--\begin{codeexample}[code only]
--lib.lookup_option("foo", vertex, graph)
--\end{codeexample}
--- %
--- and if |/graph drawing/foo| has an initial value set, if the
+-- and if |/graph drawin/foo| has an inital value set, if the
-- parameter is not explicitly set in a vertex, you will get the value
-- set for the graph or, if it is not set there either, the initial
--- value. In contrast, if you write
--- %
+-- value. In contrast, if you write
--\begin{codeexample}[code only]
-- vertex.options["foo"] or graph.options["foo"]
--\end{codeexample}
--- %
-- what happens is that the first access to |.options| will
-- \emph{always} return something when an initial parameter has been
--- set for the option |foo|.
+-- set for the option |foo|.
--
--- @param name The name of the options
+-- @param name The name of the options
-- @param ... Any number of objects. Each must have an options
--- field.
+-- field.
--
-- @return The found option
@@ -266,10 +262,10 @@ function lib.lookup_option(name, ...)
local list = {...}
for i=1,#list-1 do
local o = list[i].options
- if o then
+ if o then
local v = rawget(o, name)
if v then
- return v
+ return v
end
end
end
@@ -284,12 +280,12 @@ end
-- a |new| function, which takes an optional table of |initial| values
-- and which outputs a new table whose metatable is the
-- class. The |new| function will call the function |constructor| if
--- it exists. Furthermore, the class object's |__index| is set to itself
+-- it exsist. Furthermore, the class object's |__index| is set to itself
-- and its meta table is set to the |base_class| field of the
-- table. If |t| is |nil|, a new table is created.
--
-- Here is a typical usage of this function:
--- %
+--
--\begin{codeexample}[code only]
--local Point = lib.class {}
--
@@ -301,14 +297,13 @@ end
--
--print(p:length())
--\end{codeexample}
--- %
-- We can subclass this as follows:
--- %
+--
--\begin{codeexample}[code only]
--local Point3D = lib.class { base_class = Point }
--
--function Point3D:length()
--- local l = Point.length(self) -- Call base class's function
+-- local l = Point.length(self) -- Call base class's function
-- return math.sqrt(l*l + self.z*self.zdy)
--end
--
@@ -323,31 +318,31 @@ end
function lib.class(t)
t = t or {}
-
+
-- First, setup indexing, if necessary
if not t.__index then
t.__index = t
end
-
+
-- Second, setup new method, if necessary
- t.new = t.new or
- function (initial)
-
+ t.new = t.new or
+ function (initial)
+
-- Create new object
local obj = {}
for k,v in pairs(initial or {}) do
- obj[k] = v
+ obj[k] = v
end
setmetatable(obj, t)
if obj.constructor then
- obj:constructor()
+ obj:constructor()
end
-
+
return obj
end
-
- -- Third, setup inheritance, if necessary
+
+ -- Third, setup inheritence, if necessary
if not getmetatable(t) then
setmetatable(t, t.base_class)
end
@@ -364,8 +359,8 @@ end
-- a table) for which some methods are needed only seldomly. In this
-- case, you can put these methods in a separate file and then use
-- |ondemand| to indicate that the methods are found in a
--- another file.
--- %
+-- another file.
+--
--\begin{codeexample}[code only]
-- -- File Foo.lua
-- local Foo = {}
@@ -393,24 +388,23 @@ end
function lib.ondemand(filename, table, name)
return function(...)
- require (filename)
- return table[name] (...)
- end
+ require (filename)
+ return table[name] (...)
+ end
end
---
--- This implements the a random number generator similar to the one
--- provided by Lua, but based on the tex.uniformdeviate primitive to
--- avoid differences in random numbers due to platform specifics.
+-- This implements the legacy random number generator of Lua 5.2 in
+-- pure Lua. This is needed for Lua 5.3 compatibility to obtain
+-- consitent results.
--
-- @param l Lower bound
-- @param u Upper bound
-- @return A random number
function lib.random(l,u)
- local fraction_one = 268435456
- local r = tex.uniform_rand(fraction_one)/fraction_one
+ local r = math.random()
if l and u then
assert(l <= u)
return math.floor(r*(u-l+1)) + l
@@ -422,14 +416,6 @@ function lib.random(l,u)
end
end
----
--- Provide the seed for the random number generator
---
--- @param seed random seed
-function lib.randomseed(seed)
- tex.init_rand(seed)
-end
-
-- Done
return lib