sectionx 0.1.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.
- checksums.yaml +7 -0
- checksums.yaml.gz.sig +2 -0
- data/lib/sectionx.rb +119 -0
- data.tar.gz.sig +0 -0
- metadata +108 -0
- metadata.gz.sig +0 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 9037b655286271e690d6f4761e277fa43a6a81f3
|
4
|
+
data.tar.gz: b64509b53c85bb277ceb48ab939ebda1ceae2fc2
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 7122c92cc9c7046771a66fd5d58b79b44f7b358cc9174959159a3191b2903b79d08d90615af3603beacc50e7a95bc716c3b98aeda4e920fcb340259ce8e178a9
|
7
|
+
data.tar.gz: 51f3111239dff687546d8062b47c2c68065146104e9ca2b2d725f18f34a002c538703b7f88dd11aa132eb6f877c2ded8ecd5f90829453778b7a22368529abe8f
|
checksums.yaml.gz.sig
ADDED
data/lib/sectionx.rb
ADDED
@@ -0,0 +1,119 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
# file: sectionx.rb
|
4
|
+
|
5
|
+
require 'line-tree'
|
6
|
+
require 'rexle-builder'
|
7
|
+
|
8
|
+
|
9
|
+
class SectionX
|
10
|
+
|
11
|
+
def initialize()
|
12
|
+
end
|
13
|
+
|
14
|
+
def import(raw_s)
|
15
|
+
|
16
|
+
lines = raw_s.lines
|
17
|
+
header = lines.shift
|
18
|
+
id = header[/id=["']([^"']+)/,1] || 'sectionx'
|
19
|
+
|
20
|
+
body, summary = lines.join.strip.split(/^----*$/).reverse
|
21
|
+
nested = indent_heading("# summary\n%s\n# begin\n%s" % [summary,\
|
22
|
+
body.strip])
|
23
|
+
a = LineTree.new(nested).to_a
|
24
|
+
|
25
|
+
summary = a.shift.flatten(1)
|
26
|
+
summary.shift
|
27
|
+
|
28
|
+
section1 = a.shift.flatten(1)
|
29
|
+
section1.shift
|
30
|
+
|
31
|
+
xml = RexleBuilder.new
|
32
|
+
|
33
|
+
a2 = xml.send(id) do
|
34
|
+
xml.summary do
|
35
|
+
summary.each do |raw_x|
|
36
|
+
label, value = raw_x.split(/\s*:\s*/,2)
|
37
|
+
xml.send(label.downcase.gsub(/\s+/,'_'), value)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
xml.sections do
|
41
|
+
xml.section do
|
42
|
+
xml.summary do
|
43
|
+
section1.each do |raw_x|
|
44
|
+
label, value = raw_x.split(/\s*:\s*/,2)
|
45
|
+
xml.send(label.downcase.gsub(/\s+/,'_'), value)
|
46
|
+
end
|
47
|
+
end
|
48
|
+
xml.sections
|
49
|
+
end
|
50
|
+
a.each do |section_name, raw_rows|
|
51
|
+
xml.section({title: section_name}) do
|
52
|
+
xml.summary do
|
53
|
+
raw_rows.each do |raw_x|
|
54
|
+
label, value = raw_x.split(/\s*:\s*/,2)
|
55
|
+
xml.send(label.downcase.gsub(/\s+/,'_'), value)
|
56
|
+
end
|
57
|
+
end
|
58
|
+
xml.sections
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
@doc = Rexle.new a2
|
65
|
+
|
66
|
+
end
|
67
|
+
|
68
|
+
def to_xml(options)
|
69
|
+
@doc.xml(options)
|
70
|
+
end
|
71
|
+
|
72
|
+
private
|
73
|
+
|
74
|
+
|
75
|
+
def indent_heading(s, heading='#')
|
76
|
+
|
77
|
+
a = s.split(/(?=^\s*#{heading}\s*\w)/).map do |x|
|
78
|
+
|
79
|
+
heading_title = x[/^\s*#{heading}\s*(.*)/,1]
|
80
|
+
|
81
|
+
if heading_title then
|
82
|
+
|
83
|
+
lines = x.lines
|
84
|
+
body = lines[1..-1].map{|y| y.prepend ' '}.join
|
85
|
+
r = indent_heading(body, heading + '#')
|
86
|
+
|
87
|
+
heading_title + "\n" + r
|
88
|
+
else
|
89
|
+
x
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
a.join
|
94
|
+
end
|
95
|
+
|
96
|
+
end
|
97
|
+
|
98
|
+
if __FILE__ == $0 then
|
99
|
+
|
100
|
+
s =<<EOF
|
101
|
+
<?sectionx id='personal'?>
|
102
|
+
|
103
|
+
title: My Personal Profile
|
104
|
+
tags: profile personal
|
105
|
+
|
106
|
+
----------------------------
|
107
|
+
|
108
|
+
name: John Smith
|
109
|
+
age: 68
|
110
|
+
|
111
|
+
# Employment
|
112
|
+
Employer: FQM R&S
|
113
|
+
EOF
|
114
|
+
|
115
|
+
sx = SectionX.new
|
116
|
+
sx.import s
|
117
|
+
puts sx.to_xml pretty: true
|
118
|
+
|
119
|
+
end
|
data.tar.gz.sig
ADDED
Binary file
|
metadata
ADDED
@@ -0,0 +1,108 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: sectionx
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- James Robertson
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain:
|
11
|
+
- |
|
12
|
+
-----BEGIN CERTIFICATE-----
|
13
|
+
MIIDljCCAn6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBIMRIwEAYDVQQDDAlnZW1t
|
14
|
+
YXN0ZXIxHjAcBgoJkiaJk/IsZAEZFg5qYW1lc3JvYmVydHNvbjESMBAGCgmSJomT
|
15
|
+
8ixkARkWAmV1MB4XDTE1MDIyMzIxMDM1OFoXDTE2MDIyMzIxMDM1OFowSDESMBAG
|
16
|
+
A1UEAwwJZ2VtbWFzdGVyMR4wHAYKCZImiZPyLGQBGRYOamFtZXNyb2JlcnRzb24x
|
17
|
+
EjAQBgoJkiaJk/IsZAEZFgJldTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
|
18
|
+
ggEBANUhQ0jRPxKyNshsQpT6KNb7RhQ+YU2bUAL3i0uCQi27EAtd60q/1POpc15N
|
19
|
+
W3h0qwbvkiF3QbeVvPiM/hx13o02A3u3cJZjVgnKPe4cvgWBEHEkSevY+FM/u+XC
|
20
|
+
RpQUHSIwlE/MrmEK0yZne3g0Uu7uVStNQ7QEdF7df8cbtKy8Hyua3Y1TUlajs34N
|
21
|
+
ec9n3mIMelaOrRbv1NaxXBgrmfiww+o9HJDzA1pVrYaXDaw8jrkMd19da/5ahLIv
|
22
|
+
nEAWDO5g7XOPAZTaa1vmHOVaAuDNKFRi5QFDOCGbaVe2XrOgvV2vPr/5OQBphCz/
|
23
|
+
5B7bsimn8YtbiGTzknBX6um9DJkCAwEAAaOBijCBhzAJBgNVHRMEAjAAMAsGA1Ud
|
24
|
+
DwQEAwIEsDAdBgNVHQ4EFgQUeqwRWJDjmDXJbw8w7IgcrtATy2owJgYDVR0RBB8w
|
25
|
+
HYEbZ2VtbWFzdGVyQGphbWVzcm9iZXJ0c29uLmV1MCYGA1UdEgQfMB2BG2dlbW1h
|
26
|
+
c3RlckBqYW1lc3JvYmVydHNvbi5ldTANBgkqhkiG9w0BAQUFAAOCAQEADnti0yjP
|
27
|
+
zm4yJGzz/4o2LLojg6qAFVb7fuL1W6vVxanMn6lhfnj57rtmMTf6ku+W2zFKCc/7
|
28
|
+
E/zOY5qcWN+dVPdKY7hCmRmo1Z0ETxCO+FgObGGLS4LRAjoJbrsVMY56TIIOyoxX
|
29
|
+
i5o4EgthPBhgj0faOLDu9N5Ykmu68k2TJjDrTVBiomA+AiuUjgGrgMJj8uEOOWck
|
30
|
+
FoeFWuTT19DkSLd1N/Rr+dqpzI+qdNncw6Fl3ILayVX77MOnAZDrNj63PV22SauM
|
31
|
+
fF3d7swBn//lagO6DAUK+663TP5+b44Iqo8hPzD1c9+c5WJjVDaCskt69Ue5+dlb
|
32
|
+
VamQ/GtAeu1Iyg==
|
33
|
+
-----END CERTIFICATE-----
|
34
|
+
date: 2015-02-23 00:00:00.000000000 Z
|
35
|
+
dependencies:
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: line-tree
|
38
|
+
requirement: !ruby/object:Gem::Requirement
|
39
|
+
requirements:
|
40
|
+
- - "~>"
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
version: '0.5'
|
43
|
+
- - ">="
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: 0.5.1
|
46
|
+
type: :runtime
|
47
|
+
prerelease: false
|
48
|
+
version_requirements: !ruby/object:Gem::Requirement
|
49
|
+
requirements:
|
50
|
+
- - "~>"
|
51
|
+
- !ruby/object:Gem::Version
|
52
|
+
version: '0.5'
|
53
|
+
- - ">="
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: 0.5.1
|
56
|
+
- !ruby/object:Gem::Dependency
|
57
|
+
name: dynarex-daily
|
58
|
+
requirement: !ruby/object:Gem::Requirement
|
59
|
+
requirements:
|
60
|
+
- - "~>"
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: '0.2'
|
63
|
+
- - ">="
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: 0.2.1
|
66
|
+
type: :runtime
|
67
|
+
prerelease: false
|
68
|
+
version_requirements: !ruby/object:Gem::Requirement
|
69
|
+
requirements:
|
70
|
+
- - "~>"
|
71
|
+
- !ruby/object:Gem::Version
|
72
|
+
version: '0.2'
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: 0.2.1
|
76
|
+
description:
|
77
|
+
email: james@r0bertson.co.uk
|
78
|
+
executables: []
|
79
|
+
extensions: []
|
80
|
+
extra_rdoc_files: []
|
81
|
+
files:
|
82
|
+
- lib/sectionx.rb
|
83
|
+
homepage: https://github.com/jrobertson/sectionx
|
84
|
+
licenses:
|
85
|
+
- MIT
|
86
|
+
metadata: {}
|
87
|
+
post_install_message:
|
88
|
+
rdoc_options: []
|
89
|
+
require_paths:
|
90
|
+
- lib
|
91
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
92
|
+
requirements:
|
93
|
+
- - ">="
|
94
|
+
- !ruby/object:Gem::Version
|
95
|
+
version: '0'
|
96
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
97
|
+
requirements:
|
98
|
+
- - ">="
|
99
|
+
- !ruby/object:Gem::Version
|
100
|
+
version: '0'
|
101
|
+
requirements: []
|
102
|
+
rubyforge_project:
|
103
|
+
rubygems_version: 2.2.2
|
104
|
+
signing_key:
|
105
|
+
specification_version: 4
|
106
|
+
summary: Makes it convenient to store and retrieve hierarchical data in an XML format
|
107
|
+
known as SectionX
|
108
|
+
test_files: []
|
metadata.gz.sig
ADDED
Binary file
|