wikitree 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/CHANGELOG.md +3 -0
- data/Manifest.txt +9 -0
- data/README.md +32 -0
- data/Rakefile +27 -0
- data/lib/wikitree.rb +14 -0
- data/lib/wikitree/nodes.rb +169 -0
- data/lib/wikitree/version.rb +17 -0
- data/test/helper.rb +9 -0
- data/test/test_nodes.rb +20 -0
- metadata +91 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 12e6f4b45852b8848548302d88125c753fb89e1a
|
4
|
+
data.tar.gz: e0fbb8c39bf9b113ccf8310e57acb450d6ad2106
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 2a020809e8b0267805a62e361e1d131c1323c78d094498c11ea2dddb9ebf8bb948ac32110ce120508d9775059b01e1ad4431694e9dc607ea91b056175d94991d
|
7
|
+
data.tar.gz: 31d70b43cc4bb0b4f07d538f1442e338e22c5c62593fb0d5e29b6f88f76f694d3955962f485b51386f9a52954dd5618b2b732c0fca93afd5da37c4472ff88cc9
|
data/CHANGELOG.md
ADDED
data/Manifest.txt
ADDED
data/README.md
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
# Wikitree - Wikitext/script Abstract Syntax Tree (AST)
|
2
|
+
|
3
|
+
|
4
|
+
* home :: [github.com/wikiscript/wikiscript](https://github.com/wikiscript/wikiscript)
|
5
|
+
* bugs :: [github.com/wikiscript/wikiscript/issues](https://github.com/wikiscript/wikiscript/issues)
|
6
|
+
* gem :: [rubygems.org/gems/wikitree](https://rubygems.org/gems/wikitree)
|
7
|
+
* rdoc :: [rubydoc.info/gems/wikitree](http://rubydoc.info/gems/wikitree)
|
8
|
+
|
9
|
+
|
10
|
+
## Usage
|
11
|
+
|
12
|
+
|
13
|
+
to be done
|
14
|
+
|
15
|
+
|
16
|
+
|
17
|
+
|
18
|
+
## Install
|
19
|
+
|
20
|
+
Use
|
21
|
+
|
22
|
+
gem install wikitree
|
23
|
+
|
24
|
+
or add to your Gemfile
|
25
|
+
|
26
|
+
gem 'wikitree'
|
27
|
+
|
28
|
+
|
29
|
+
## License
|
30
|
+
|
31
|
+
The `wikiscript` scripts are dedicated to the public domain.
|
32
|
+
Use it as you please with no restrictions whatsoever.
|
data/Rakefile
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'hoe'
|
2
|
+
require './lib/wikitree/version.rb'
|
3
|
+
|
4
|
+
Hoe.spec 'wikitree' do
|
5
|
+
|
6
|
+
self.version = Wikiscript::Module::Tree::VERSION
|
7
|
+
|
8
|
+
self.summary = "wikitree - wikitext/script abstract syntax tree (ast)"
|
9
|
+
self.description = summary
|
10
|
+
|
11
|
+
self.urls = { home: 'https://github.com/wikiscript/wikiscript' }
|
12
|
+
|
13
|
+
self.author = 'Gerald Bauer'
|
14
|
+
self.email = 'opensport@googlegroups.com'
|
15
|
+
|
16
|
+
# switch extension to .markdown for gihub formatting
|
17
|
+
self.readme_file = 'README.md'
|
18
|
+
self.history_file = 'CHANGELOG.md'
|
19
|
+
|
20
|
+
self.extra_deps = []
|
21
|
+
|
22
|
+
self.licenses = ['Public Domain']
|
23
|
+
|
24
|
+
self.spec_extras = {
|
25
|
+
required_ruby_version: '>= 2.2.2'
|
26
|
+
}
|
27
|
+
end
|
data/lib/wikitree.rb
ADDED
@@ -0,0 +1,169 @@
|
|
1
|
+
###
|
2
|
+
# a little abstract syntax tree for wikitext/script
|
3
|
+
|
4
|
+
module Wikitree
|
5
|
+
|
6
|
+
class Node
|
7
|
+
end
|
8
|
+
|
9
|
+
|
10
|
+
class Text < Node ## Text run/segement
|
11
|
+
def initialize( text )
|
12
|
+
@text = text
|
13
|
+
end
|
14
|
+
|
15
|
+
def to_text
|
16
|
+
## todo: fix remove possible html stuff - why? why not?
|
17
|
+
@text
|
18
|
+
end
|
19
|
+
def to_wiki() @text; end
|
20
|
+
|
21
|
+
def inspect
|
22
|
+
@text.inspect
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
|
27
|
+
class Page < Node ## wiki page link - use a different name - why? why not?
|
28
|
+
def initialize( name, alt_name=nil )
|
29
|
+
@name = name
|
30
|
+
@alt_name = alt_name
|
31
|
+
end
|
32
|
+
|
33
|
+
def to_text
|
34
|
+
text = @alt_name ? @alt_name : @name
|
35
|
+
" #{text} " ## note: wrap for now in leading and trailing space!! - fix space issue sometime!!
|
36
|
+
end
|
37
|
+
def to_wiki
|
38
|
+
if @alt_name
|
39
|
+
"[[#{@name}|#{@alt_name}]]"
|
40
|
+
else
|
41
|
+
"[[#{@name}]]"
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
def inspect
|
46
|
+
if @alt_name
|
47
|
+
"#<page #{@name} | #{@alt_name}>"
|
48
|
+
else
|
49
|
+
"#<page #{@name}>"
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
|
55
|
+
class Template < Node
|
56
|
+
attr_reader :name,
|
57
|
+
:params
|
58
|
+
|
59
|
+
class Param ## use a nested param class - why? why not?
|
60
|
+
attr_reader :num, ## note: starts with 1 (NOT 0)
|
61
|
+
:name,
|
62
|
+
:value
|
63
|
+
def initialize( num, name, value )
|
64
|
+
@num = num # todo/check: rename to index or such - why? why not?
|
65
|
+
@name = name
|
66
|
+
@value = value
|
67
|
+
end
|
68
|
+
|
69
|
+
def inspect
|
70
|
+
if @name
|
71
|
+
"#<_#{num} (#{@name}): #{@value.inspect}>"
|
72
|
+
else
|
73
|
+
"#<_#{num}: #{@value.inspect}>"
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
def pretty_print(pp)
|
78
|
+
if @name
|
79
|
+
pp.text "#<_#{num} (#{@name}): "
|
80
|
+
else
|
81
|
+
pp.text "#<_#{num}: "
|
82
|
+
end
|
83
|
+
pp.breakable
|
84
|
+
pp.pp @value
|
85
|
+
pp.text ">"
|
86
|
+
end
|
87
|
+
|
88
|
+
def to_text
|
89
|
+
if value.empty? ## note: value might be nil (convert to "")
|
90
|
+
''
|
91
|
+
else
|
92
|
+
value.map { |node| node.to_text }.join
|
93
|
+
end
|
94
|
+
end
|
95
|
+
def to_wiki
|
96
|
+
if value.empty? ## note: value might be nil (convert to "")
|
97
|
+
''
|
98
|
+
else
|
99
|
+
value.map { |node| node.to_wiki }.join
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
end ## (nested) lass Param
|
104
|
+
|
105
|
+
|
106
|
+
def initialize( name, params )
|
107
|
+
@name = name
|
108
|
+
@params = []
|
109
|
+
params.each_with_index do |param,i|
|
110
|
+
@params << Param.new( i+1, param[0], param[1] )
|
111
|
+
end
|
112
|
+
end
|
113
|
+
|
114
|
+
def inspect
|
115
|
+
"#<template #{@name}: #{@params.inspect}>"
|
116
|
+
end
|
117
|
+
|
118
|
+
def pretty_print(pp)
|
119
|
+
pp.text "#<template "
|
120
|
+
pp.text "#{name}: "
|
121
|
+
pp.breakable
|
122
|
+
pp.pp @params
|
123
|
+
pp.text ">"
|
124
|
+
end
|
125
|
+
|
126
|
+
def to_text
|
127
|
+
## build a template method name (e.g. add _ prefix and change space to _ too)
|
128
|
+
## and dowcase e.g. Infobox country => infobox_country
|
129
|
+
method_name = "_#{@name.downcase.gsub( ' ', '_' )}".to_sym
|
130
|
+
if respond_to?( method_name )
|
131
|
+
send( method_name ) ## todo/fix: add args too!!!
|
132
|
+
else
|
133
|
+
## rebuild template as string
|
134
|
+
buf = String.new('')
|
135
|
+
buf << "!!{{"
|
136
|
+
buf << "#{@name}"
|
137
|
+
@params.each do |param|
|
138
|
+
buf << " | "
|
139
|
+
if param.name
|
140
|
+
buf << param.name
|
141
|
+
buf << "="
|
142
|
+
end
|
143
|
+
buf << param.to_text ## note. param.to_text ONLY returns value (NOT name incl.)
|
144
|
+
end
|
145
|
+
buf << "}}"
|
146
|
+
buf
|
147
|
+
end
|
148
|
+
end
|
149
|
+
|
150
|
+
def to_wiki
|
151
|
+
## rebuild template as string
|
152
|
+
buf = String.new('')
|
153
|
+
buf << "{{"
|
154
|
+
buf << "#{@name}"
|
155
|
+
@params.each do |param|
|
156
|
+
buf << " | "
|
157
|
+
if param.name
|
158
|
+
buf << param.name
|
159
|
+
buf << "="
|
160
|
+
end
|
161
|
+
buf << param.to_wiki ## note. param.to_text ONLY returns value (NOT name incl.)
|
162
|
+
end
|
163
|
+
buf << "}}"
|
164
|
+
buf
|
165
|
+
end
|
166
|
+
end # class Template
|
167
|
+
|
168
|
+
end # module Wikitext
|
169
|
+
|
@@ -0,0 +1,17 @@
|
|
1
|
+
|
2
|
+
module Wikiscript
|
3
|
+
module Module
|
4
|
+
module Tree
|
5
|
+
VERSION = '0.0.1'
|
6
|
+
|
7
|
+
def self.banner
|
8
|
+
"wikitree/#{VERSION} on Ruby #{RUBY_VERSION} (#{RUBY_RELEASE_DATE}) [#{RUBY_PLATFORM}] in (#{root})"
|
9
|
+
end
|
10
|
+
|
11
|
+
def self.root
|
12
|
+
File.expand_path( File.dirname(File.dirname(File.dirname(__FILE__))) )
|
13
|
+
end
|
14
|
+
|
15
|
+
end # module Tree
|
16
|
+
end # module Module
|
17
|
+
end # module Wikiscript
|
data/test/helper.rb
ADDED
data/test/test_nodes.rb
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
###
|
2
|
+
# to run use
|
3
|
+
# ruby -I ./lib -I ./test test/test_nodes.rb
|
4
|
+
|
5
|
+
|
6
|
+
require 'helper'
|
7
|
+
|
8
|
+
|
9
|
+
class TestNodes < MiniTest::Test
|
10
|
+
|
11
|
+
def test_page
|
12
|
+
page = Wikitree::Page.new( 'La Florida, Chile', 'La Florida' )
|
13
|
+
|
14
|
+
assert_equal ' La Florida ', page.to_text
|
15
|
+
assert_equal '[[La Florida, Chile|La Florida]]', page.to_wiki
|
16
|
+
end
|
17
|
+
|
18
|
+
end # class TestNodes
|
19
|
+
|
20
|
+
|
metadata
ADDED
@@ -0,0 +1,91 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: wikitree
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Gerald Bauer
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2020-11-30 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rdoc
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '4.0'
|
20
|
+
- - "<"
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '7'
|
23
|
+
type: :development
|
24
|
+
prerelease: false
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
26
|
+
requirements:
|
27
|
+
- - ">="
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '4.0'
|
30
|
+
- - "<"
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '7'
|
33
|
+
- !ruby/object:Gem::Dependency
|
34
|
+
name: hoe
|
35
|
+
requirement: !ruby/object:Gem::Requirement
|
36
|
+
requirements:
|
37
|
+
- - "~>"
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
version: '3.22'
|
40
|
+
type: :development
|
41
|
+
prerelease: false
|
42
|
+
version_requirements: !ruby/object:Gem::Requirement
|
43
|
+
requirements:
|
44
|
+
- - "~>"
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: '3.22'
|
47
|
+
description: wikitree - wikitext/script abstract syntax tree (ast)
|
48
|
+
email: opensport@googlegroups.com
|
49
|
+
executables: []
|
50
|
+
extensions: []
|
51
|
+
extra_rdoc_files:
|
52
|
+
- CHANGELOG.md
|
53
|
+
- Manifest.txt
|
54
|
+
- README.md
|
55
|
+
files:
|
56
|
+
- CHANGELOG.md
|
57
|
+
- Manifest.txt
|
58
|
+
- README.md
|
59
|
+
- Rakefile
|
60
|
+
- lib/wikitree.rb
|
61
|
+
- lib/wikitree/nodes.rb
|
62
|
+
- lib/wikitree/version.rb
|
63
|
+
- test/helper.rb
|
64
|
+
- test/test_nodes.rb
|
65
|
+
homepage: https://github.com/wikiscript/wikiscript
|
66
|
+
licenses:
|
67
|
+
- Public Domain
|
68
|
+
metadata: {}
|
69
|
+
post_install_message:
|
70
|
+
rdoc_options:
|
71
|
+
- "--main"
|
72
|
+
- README.md
|
73
|
+
require_paths:
|
74
|
+
- lib
|
75
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
76
|
+
requirements:
|
77
|
+
- - ">="
|
78
|
+
- !ruby/object:Gem::Version
|
79
|
+
version: 2.2.2
|
80
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
81
|
+
requirements:
|
82
|
+
- - ">="
|
83
|
+
- !ruby/object:Gem::Version
|
84
|
+
version: '0'
|
85
|
+
requirements: []
|
86
|
+
rubyforge_project:
|
87
|
+
rubygems_version: 2.5.2
|
88
|
+
signing_key:
|
89
|
+
specification_version: 4
|
90
|
+
summary: wikitree - wikitext/script abstract syntax tree (ast)
|
91
|
+
test_files: []
|