wikisys 0.1.1 → 0.2.0

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.
Files changed (6) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data.tar.gz.sig +0 -0
  4. data/lib/wikisys.rb +102 -11
  5. metadata +23 -3
  6. metadata.gz.sig +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: fb693056064588d37ce05d8b8a7d7db5bd811e720ce404c6dec26588627c7ab9
4
- data.tar.gz: 89ef7167da95c39fe1c3e9b4f60f1771d336c1045705d41a619d28c0507b74b7
3
+ metadata.gz: bffc9856824a5b8afe8648ea585e3fbe2400ff94e7d0c0fbb0f622b138b8f7e6
4
+ data.tar.gz: c2acad35e8fe2361cadabe919004a2f203bf687a1efdc43e061351a3fda11678
5
5
  SHA512:
6
- metadata.gz: d6a29dc0056aef755441064dd180a37b453162a7853e6baabc32009d8101bfc8fb23104252adb211787a4c2686d8f8ce9edcf59ec95b8933785b4bb93bdf6969
7
- data.tar.gz: df8647ab77ad5a97976b336bfd5a4f91c87ed55a4fa9d91e6af2628bf30d069823c158e86af47ccea603febedb4f605ecdd85400fa50b4744ffb2bd4c56c6e20
6
+ metadata.gz: 0fc14b79eb6eca3034f904be493787d8058e8d85699f612d0c1749e2bc4536c20fa7c08b36e81b04f0ac7c8ae8955884f86565a3a027348c218acd181898bc3e
7
+ data.tar.gz: 9f499b325c14ed3dc204d21c928756a5b27cae725c824f718056cdece85c1729b44f62734d1723a1282585ad5b7bf5fc71c035647851b88bcdf09b0430b9b71b
Binary file
data.tar.gz.sig CHANGED
Binary file
@@ -3,10 +3,13 @@
3
3
  # file: wikisys.rb
4
4
 
5
5
  require 'dxlite'
6
+ require 'martile'
6
7
 
7
8
  module Wikisys
8
9
 
9
10
  class Wiki
11
+
12
+ attr_reader :to_xml
10
13
 
11
14
  def initialize(filepath='.', entries: 'entries.json', debug: false)
12
15
 
@@ -29,35 +32,123 @@ module Wikisys
29
32
  def page(title)
30
33
 
31
34
  r = @entries.find_by_title title
32
- @page = r ? File.read(title + '.md') : make_page(title)
35
+ @page = r ? read_md(title) : make_page(title)
36
+ @to_xml = build_xml @page
37
+ @entries.save
38
+
39
+ return @page
33
40
 
34
41
  end
35
42
 
36
- def page=(content)
43
+ def page=(raw_content)
44
+
45
+ title = raw_content.lines.first.chomp
46
+
47
+ r = @entries.find_by_title title
48
+ make_page(title, raw_content.lines.last.chomp[/(?<=\+ )/]) unless r
49
+
50
+ write_md title, raw_content
37
51
 
38
- title = content.lines.first.chomp
39
- r = @entries.find_by_title title
40
- make_page(title) unless r
52
+ @to_xml = build_xml raw_content
53
+ write_xml title, @to_xml
41
54
 
42
- File.write title + '.md', content
43
- @page = content
55
+
56
+ @entries.save
57
+ @page = raw_content
44
58
 
45
59
  end
46
60
 
47
61
  private
48
62
 
49
- def make_page(title)
63
+ def build_xml(content)
64
+
65
+ s = content.gsub(/\[\[[^\]]+\]\]/) do |raw_link|
66
+
67
+ title = raw_link[2..-3].strip
68
+
69
+ r = @entries.find_by_title title
70
+
71
+ e = Rexle::Element.new('a').add_text title
72
+ e.attributes[:href] = title.gsub(/ +/, '_')
73
+
74
+ if r then
75
+
76
+ e.attributes[:title] = title.capitalize
77
+
78
+ else
79
+
80
+ make_page(title.capitalize)
81
+ e.attributes[:class] = 'new'
82
+ e.attributes[:title] = title.capitalize + ' (page does not exist)'
83
+
84
+ end
85
+
86
+ e.xml
87
+
88
+ end
89
+
90
+
91
+ heading = "<heading>%s</heading>" % s.lines.first.chomp
92
+ tags = ''
93
+
94
+ if s.lines.last[0] = '+' then
95
+
96
+ list = s.lines.last[2..-1].split.map {|tag| " <tag>%s</tag>" % tag}
97
+ tags = "<tags>\n%s\n </tags>" % list.join("\n")
98
+
99
+ body = "<body>\n %s </body>" % \
100
+ Martile.new(s.lines[1..-2].join.strip).to_html
101
+
102
+ else
103
+
104
+ body = "<body>%s</body>" % Martile.new(s.lines[1..-1].join.strip).to_html
105
+
106
+ end
107
+
108
+ "<article>\n %s\n %s\n %s\n</article>" % [heading, body, tags]
109
+
110
+
111
+ end
112
+
113
+ def make_page(title, raw_tags=title.downcase.gsub(/['\.\(\)]/,''))
50
114
 
51
- tags = title.downcase.gsub(/['\.\(\)]/,'').split.join(' ')
115
+ tags = raw_tags.split.join(' ')
52
116
  s = "#{title}\n\n\n+ " + tags
53
- File.write title + '.md', s
117
+ write_md title, s
118
+ write_xml title, build_xml(s)
54
119
 
55
120
  @entries.create title: title, tags: tags
56
- @entries.save
121
+
57
122
  return s
58
123
 
59
124
  end
60
125
 
126
+ def read_md(title)
127
+
128
+ filepath = File.join(File.absolute_path(@filepath), 'md',
129
+ title.gsub(/ +/,'_') + '.md')
130
+ File.read(title.gsub(/ +/,'_') + '.md')
131
+
132
+ end
133
+
134
+ def write_md(title, content)
135
+
136
+ filepath = File.join(File.absolute_path(@filepath), 'md',
137
+ title.gsub(/ +/,'_') + '.md')
138
+ FileUtils.mkdir_p File.dirname(filepath)
139
+ File.write filepath, content
140
+
141
+ end
142
+
143
+ def write_xml(title, content)
144
+
145
+ filepath = File.join(File.absolute_path(@filepath), 'xml',
146
+ title.gsub(/ +/,'_') + '.xml')
147
+ FileUtils.mkdir_p File.dirname(filepath)
148
+ File.write filepath, content
149
+
150
+ end
151
+
61
152
  end
62
153
 
63
154
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wikisys
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Robertson
@@ -46,7 +46,7 @@ dependencies:
46
46
  version: '0.2'
47
47
  - - ">="
48
48
  - !ruby/object:Gem::Version
49
- version: 0.2.1
49
+ version: 0.2.2
50
50
  type: :runtime
51
51
  prerelease: false
52
52
  version_requirements: !ruby/object:Gem::Requirement
@@ -56,7 +56,27 @@ dependencies:
56
56
  version: '0.2'
57
57
  - - ">="
58
58
  - !ruby/object:Gem::Version
59
- version: 0.2.1
59
+ version: 0.2.2
60
+ - !ruby/object:Gem::Dependency
61
+ name: martile
62
+ requirement: !ruby/object:Gem::Requirement
63
+ requirements:
64
+ - - "~>"
65
+ - !ruby/object:Gem::Version
66
+ version: '1.4'
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ version: 1.4.3
70
+ type: :runtime
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - "~>"
75
+ - !ruby/object:Gem::Version
76
+ version: '1.4'
77
+ - - ">="
78
+ - !ruby/object:Gem::Version
79
+ version: 1.4.3
60
80
  description:
61
81
  email: james@jamesrobertson.eu
62
82
  executables: []
metadata.gz.sig CHANGED
Binary file