summaryrefslogtreecommitdiffstats
path: root/docs
diff options
context:
space:
mode:
Diffstat (limited to 'docs')
-rwxr-xr-xdocs/b.rb108
-rw-r--r--docs/mmap.rb320
2 files changed, 428 insertions, 0 deletions
diff --git a/docs/b.rb b/docs/b.rb
new file mode 100755
index 0000000..2b7adfb
--- /dev/null
+++ b/docs/b.rb
@@ -0,0 +1,108 @@
+#!/usr/bin/ruby
+
+def yield_or_not(primary)
+ text = primary.sub(/\{\s*\|([^|]+)\|[^}]*\}/, '')
+ if text != primary
+ "def #{text}yield #$1\nend"
+ else
+ "def #{text}end"
+ end
+end
+
+def normalize(text)
+ norm = text.gsub(/\(\(\|([^|]+)\|\)\)/, '<em>\\1</em>')
+ norm.gsub(/\(\(\{/, '<tt>').gsub!(/\}\)\)/, '</tt>')
+ norm.gsub!(/\(\(<([^|>]+)[^>]*>\)\)/, '<em>\\1</em>')
+ norm.gsub!(/^\s*:\s/, ' * ')
+ norm
+end
+
+def intern_def(text, names, fout)
+ fout.puts "##{normalize(text.join('#'))}"
+ fout.puts yield_or_not(names[0])
+ if names.size > 1
+ n = names[0].chomp.sub(/\(.*/, '')
+ names[1 .. -1].each do |na|
+ nd = na.chomp.sub(/\(.*/, '')
+ if nd != n
+ fout.puts "#same than <em>#{n}</em>"
+ fout.puts yield_or_not(na)
+ end
+ end
+ end
+end
+
+def output_def(text, names, keywords, fout)
+ if ! names.empty?
+ keywords.each do |k|
+ fout.puts k
+ intern_def(text, names, fout)
+ fout.puts "end" if k != ""
+ end
+ end
+end
+
+def loop_file(file, fout)
+ text, keywords, names = [], [""], []
+ comment = false
+ rep, indent, vide = '', -1, nil
+ IO.foreach(file) do |line|
+ if /^#\^/ =~ line
+ comment = ! comment
+ next
+ end
+ if comment
+ fout.puts "# #{normalize(line)}"
+ next
+ end
+ case line
+ when /^\s*$/
+ vide = true
+ text.push line
+ when /^#\^/
+ comment = ! comment
+ when /^##/
+ line[0] = ?\s
+ fout.puts line
+ when /^#\s*(.+?)\s*$/
+ keyword = $1
+ output_def(text, names, keywords, fout)
+ text, names = [], []
+ keywords = keyword.split(/\s*##\s*/)
+ if keywords.size == 1
+ fout.puts keywords[0]
+ keywords = [""]
+ end
+ when /^#/
+ when /^---/
+ name = $'
+ if vide
+ output_def(text, names, keywords, fout)
+ text, names = [], []
+ rep, indent, vide = '', -1, false
+ end
+ names.push name
+ else
+ vide = false
+ if line.sub!(/^(\s*): /, '* ')
+ indent += ($1 <=> rep)
+ rep = $1
+ else
+ line.sub!(/^#{rep}/, '')
+ end
+ if indent >= 0
+ line = (' ' * indent) + line
+ else
+ line.sub!(/\A\s*/, '')
+ end
+ text.push line
+ end
+ end
+end
+
+File.open("#{ARGV[0]}.rb", "w") do |fout|
+ loop_file("../#{ARGV[0]}.rd", fout)
+ Dir['*.rd'].each do |file|
+ loop_file(file, fout)
+ end
+end
diff --git a/docs/mmap.rb b/docs/mmap.rb
new file mode 100644
index 0000000..ba00571
--- /dev/null
+++ b/docs/mmap.rb
@@ -0,0 +1,320 @@
+# The Mmap class implement memory-mapped file objects
+#
+# === WARNING
+# === The variables $' and $` are not available with gsub! and sub!
+class Mmap
+include Comparable
+include Enumerable
+class << self
+
+#disable paging of all pages mapped. <em>flag</em> can be
+#<em>Mmap::MCL_CURRENT</em> or <em>Mmap::MCL_FUTURE</em>
+#
+def lockall(flag)
+end
+
+#create a new Mmap object
+#
+#* <em>file</em>
+# Pathname of the file, if <em>nil</em> is given an anonymous map
+# is created <em>Mmanp::MAP_ANON</em>
+#
+#* <em>mode</em>
+# Mode to open the file, it can be "r", "w", "rw", "a"
+#
+#* <em>protection</em>
+# specify the nature of the mapping
+#
+# * <em>Mmap::MAP_SHARED</em>
+# Creates a mapping that's shared with all other processes
+# mapping the same areas of the file.
+# The default value is <em>Mmap::MAP_SHARED</em>
+#
+# * <em>Mmap::MAP_PRIVATE</em>
+# Creates a private copy-on-write mapping, so changes to the
+# contents of the mmap object will be private to this process
+#
+#* <em>options</em>
+# Hash. If one of the options <em>length</em> or <em>offset</em>
+# is specified it will not possible to modify the size of
+# the mapped file.
+#
+# * <em>length</em>
+# Maps <em>length</em> bytes from the file
+#
+# * <em>offset</em>
+# The mapping begin at <em>offset</em>
+#
+# * <em>advice</em>
+# The type of the access (see #madvise)
+#
+#
+def new(file, mode = "r", protection = Mmap::MAP_SHARED, options = {})
+end
+
+#reenable paging
+#
+def unlockall
+end
+end
+
+#add <em>count</em> bytes to the file (i.e. pre-extend the file)
+#
+def extend(count)
+end
+
+#<em>advice</em> can have the value <em>Mmap::MADV_NORMAL</em>,
+#<em>Mmap::MADV_RANDOM</em>, <em>Mmap::MADV_SEQUENTIAL</em>,
+#<em>Mmap::MADV_WILLNEED</em>, <em>Mmap::MADV_DONTNEED</em>
+#
+def madvise(advice)
+end
+
+#change the mode, value must be "r", "w" or "rw"
+#
+def mprotect(mode)
+end
+
+#disable paging
+#
+def mlock
+end
+
+#flush the file
+#
+def msync
+end
+#same than <em> msync</em>
+def flush
+end
+
+#reenable paging
+#
+def munlock
+end
+
+#terminate the association
+#
+#=== Other methods with the same syntax than for the class String
+#
+#
+def munmap
+end
+
+#
+def self == other
+end
+
+#
+def self > other
+end
+
+#
+def self >= other
+end
+
+#
+def self < other
+end
+
+#
+def self <= other
+end
+
+#
+def self === other
+end
+
+#
+def self << other
+end
+
+#
+def self =~ other
+end
+
+#
+def self[nth]
+end
+
+#
+def self[start..last]
+end
+
+#
+def self[start, length]
+end
+
+#
+def self[nth] = val
+end
+
+#
+def self[start..last] = val
+end
+
+#
+def self[start, len] = val
+end
+
+#
+def self <=> other
+end
+
+#
+def <<(other)
+end
+
+#
+def casecmp(other) >= 1.7.1
+end
+
+#
+def concat(other)
+end
+
+#
+def capitalize!
+end
+
+#
+def chop!
+end
+
+#
+def chomp!([rs])
+end
+
+#
+def count(o1 [, o2, ...])
+end
+
+#
+def crypt(salt)
+end
+
+#
+def delete!(str)
+end
+
+#
+def downcase!
+end
+
+#
+def each_byte
+yield char
+end
+
+#
+def each([rs])
+yield line
+end
+
+#
+def each_line([rs])
+yield line
+end
+
+#
+def empty?
+end
+
+#
+def freeze
+end
+
+#
+def frozen
+end
+
+#
+def gsub!(pattern, replace)
+end
+
+#
+def gsub!(pattern)
+yield str
+end
+
+#
+def include?(other)
+end
+
+#
+def index(substr[, pos])
+end
+
+#
+def insert(index, str) >= 1.7.1
+end
+
+#
+def length
+end
+
+#
+def reverse!
+end
+
+#
+def rindex(substr[, pos])
+end
+
+#
+def scan(pattern)
+end
+
+#
+def scan(pattern)
+yield str
+end
+
+#
+def size
+end
+
+#
+def slice
+end
+
+#
+def slice!
+end
+
+#
+def split([sep[, limit]])
+end
+
+#
+def squeeze!([str])
+end
+
+#
+def strip!
+end
+
+#
+def sub!(pattern, replace)
+end
+
+#
+def sub!(pattern)
+yield str
+end
+
+#
+def sum([bits])
+end
+
+#
+def swapcase!
+end
+
+#
+def tr!(search, replace)
+end
+
+#
+def tr_s!(search, replace)
+end