wikisys 0.1.1 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
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