Jump to content

Module:Escape/උපදෙස්

Wikibooks වෙතින්

සැකිල්ල:High use

This module is designed as an way to escape strings in a customized and efficient manner. It works by replacing characters that are preceded by your escape char (or phrase) There are two ways to call this module:

From another module:

සැකිල්ල:Codett
esc:char(escape char (or sequence))
සැකිල්ල:Codett(string)
code that replaces or removes unescaped chars
සැකිල්ල:Codett

From a template:

සැකිල්ල:Mlx

In a template, the most useful function is

XML Example

.

This module is primarily intended to be used by other modules. However all functions can be called in template space using |mode=the function you want to call followed by arguments.

All module functions (i.e. any func. other than

XML Example

) should be called using a colon (සැකිල්ල:Char), e.g.

XML Example

or

XML Example
සැකිල්ල:TOC tab This function takes only one argument: A string. All characters in this string which are preceded by the sequence set by
XML Example
will be replaced with placeholders that can be converted back into that char by escape:undo()
සැකිල්ල:TOC tab Takes two arguments:
  1. The string that may contain placeholders set by
    XML Example
  2. Optional, a char to be placed in front of any characters that have been de-escaped. (i.e. if you need to re-escape those string with a different char)
සැකිල්ල:TOC tab This is basically equivalent to calling
XML Example
on the string returned by
XML Example
and feeding that result into
XML Example
in a single step. Takes three arguments:
  1. A string
  2. A sequence of characters to be removed from that string. (May use a
    XML Example
    pattern)
  3. Optional, a char to be placed in front of any characters that have been de-escaped.
සැකිල්ල:TOC tab This function's primary use is to initialize the patterns to scan a string for an escape/escaped sequence. It takes two arguments, the first being the escape character and the second being a table of arguments (optional). By default, this module will escape the
XML Example
char. To escape the
XML Example
char instead, you can do
XML Example
(or
XML Example
(presuming you stored the table returned by this module in the local variable
XML Example
). When called without the second argument, char() will return a table containing the functions. This allows, for example,
XML Example
which would return '2'.

For the most part, there is very little reason to set |mode= in template space since the patterns it stores are not shared with other invokations of this module. Templates should instead use the |char= if a new escape sequence is desired.

If provided a second argument that is a table containing a {key = value} pair, such that the key is
XML Example
,
XML Example
, or
XML Example
and the value is a table containing the arguments that would have been passed to those functions. For example,
XML Example
is equivalent to
XML Example
. Note that if multiple key-value pairs are provided, only one may execute.
XML Example
is ignored if either
XML Example
or
XML Example
are present.
XML Example
is ignored if
XML Example
is present.

  • When using a multi-character escape sequence, this module only marks it using the byte value of the first character. Thus,
    XML Example
    will unescape, for example, all characters escaped with
    XML Example
    and
    XML Example
    if both were used. In practice however this shouldn't be a problem as multiple escape sequences are pretty rare unless you're transitioning between multiple code languages. (Multiple multi-char escape sequences beginning with the same character are simply bad practice anyhow.)
  • Since byte values are stored as numbers, it is not recommended for you to use a number as an escape sequence (though it may work just fine).
  • Placeholder byte values separated with return (
    XML Example
    ) characters--chosen because they are seldom used at all, and virtually never used unpaired with
    XML Example
    ; moreover, it is distinct from the markers generated by <nowiki>...</nowiki> or
    XML Example
    (which use the delete char). To set a different separator char, include the key-value pair {safeChr = alternate character} in the table that you pass to escape:char().

The following are benchmarks...

when executing the following module function:

 function p.test_kill500(frame)
  local esc = require('Module:Escape')
  for k = 1, 500 do
   local v = esc:kill(p.test_string2(), 'test')
  end
  return os.clock(esc)
 end

0.01764

when repeating the following line 500 times in a template:

XML Example

0.767

All times in seconds. The module time x500 was calculated when you loaded this doc page (normally between 0.02 and 0.07). The template time x500 was recorded on Jan 15, 2015.

ආයාත කිරීමට පෙර ඉතිහාසය

[සංස්කරණය]
oldid date/time username edit summary
642652924 2015-01-15T20:45:13Z Codehydro
642648556 2015-01-15T20:11:45Z Codehydro speed benchmark
642495498 2015-01-14T19:30:40Z Codehydro
642491193 2015-01-14T18:54:04Z Codehydro
642490918 2015-01-14T18:51:43Z Codehydro
642490836 2015-01-14T18:51:04Z Codehydro
642490541 2015-01-14T18:48:41Z Codehydro [[WP:AES|←]]Created page with '-- Example Unit tests for [[Module:Bananas]]. Click talk page to run tests. local p = require('Module:UnitTests') function p:test_string() return self:equal...'

Here's some sample output from the debug console below the module editor:

local escape = require('Module:Escape')
test = 'test, \\test, \\{,test\\\\ \\\\ \\\\\\\\'

test2 = escape:char('{'):text(test)
=test2

test, \test, \7b 044 7btest\\ \\ \\\\ test3 = escape:char('\\'):text(test2)
=test3

test, 5c 0116 5cest, 5c 055 5cb 044 7btest5c 092 5c 5c 092 5c 5c 092 5c5c 092 5c test4 = escape:char('{', {undo = test3})
=test4

test, 5c 0116 5cest, 5c 055 5cb 044 7btest5c 092 5c 5c 092 5c 5c 092 5c5c 092 5c test4 = escape:char('\\', {undo = test3})
=test4

test, test, 7b 044 7btest\ \ \\ test5 = escape:char('{', {undo = test4})
=test5 == test

true =escape:undo(test3)--doesn't work because char is still set to '{' in current session
test, 5c 0116 5cest, 5c 055 5cb 044 7btest5c 092 5c 5c 092 5c 5c 092 5c5c 092 5c =escape:undo(test4)
test, \test, \,test\\ \\ \\\\ =escape:char('\\'):undo(test3)
test, test, 7b 044 7btest\ \ \\ =escape:char('{', {undo = escape:char('\\'):undo(test3)})
test, test, {,test\ \ \\ =test == escape:char('{', {undo = escape:char('\\'):undo(test3)})
false =test == escape:char('{', {undo = escape:char('\\'):undo(test3, '\\')})
true local t = 'test { test {\\{ test, \\test, \\{,test\\ \\ \\ {\\'
=t

test { test {\{ test, \test, \{,test\ \ \ {\ local e = require('Module:Escape')
local t2 = escape:text(t)
local t3 = string.gsub(t2, '{', )
local t4 = escape:undo(t3)
=t4

test test { test, test, {,test \ local tk0 = escape:kill(t, '{')
=tk0 == t4

true
"https://si.wikibooks.org/w/index.php?title=Module:Escape/උපදෙස්&oldid=31805" වෙතින් සම්ප්‍රවේශනය කෙරිණි