docme 0.0.0 → 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/docme.rb +25 -13
- data/lib/docme/utils.rb +104 -2
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c08c7f2e03e5e79f4b1099a3beabda310493fee5
|
4
|
+
data.tar.gz: 03037b1517f00c9c4df2aea2f37b66773c551fb8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4d248f6673207bf1b75df821e680f92ad68c76d582c7b365038d96998610b5b6c08df58ca422457996c3075a31048adb77eb4a525468e8a5436f356f3bc4f6a9
|
7
|
+
data.tar.gz: 602b2d61358c17515652ba11218f8e3c37d159ca59e4dbe703c1f9e71e68d6b180c1efe5f12e5d9eb50362de705e58af91a65c1d09bf44088ea317f39faa1969
|
data/lib/docme.rb
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
# docme
|
2
2
|
|
3
3
|
require 'docme/utils'
|
4
|
+
require 'erb'
|
4
5
|
|
5
6
|
class Docme
|
6
7
|
|
7
8
|
def self.jsParse(file)
|
8
|
-
#file = ARGV[0]
|
9
|
-
|
10
9
|
|
10
|
+
#SETUP
|
11
11
|
#raise exception if no file provided, file does not exsist, the file is not readable, or the file has no content
|
12
12
|
if file== nil || !File.file?(file) || !File.exists?(file)
|
13
13
|
raise "Please provide a path to the file you wish to docme."
|
@@ -23,25 +23,34 @@ class Docme
|
|
23
23
|
|
24
24
|
puts "Woohoo! docme has a home!"
|
25
25
|
|
26
|
+
|
26
27
|
#GLOBALS
|
27
28
|
sourceFile = File.open(file).read
|
28
29
|
docmeDir = "docme"
|
30
|
+
items = Hash.new
|
31
|
+
collective = Array.new
|
32
|
+
block_content = Hash.new
|
33
|
+
block_attr = nil
|
29
34
|
block_flag = 0
|
30
35
|
code_flag = 0
|
36
|
+
code = ""
|
31
37
|
|
38
|
+
|
39
|
+
#PARSING
|
32
40
|
sourceFile.each_line do |line|
|
33
41
|
#strip leading whitespaces
|
34
42
|
line = line.lstrip
|
35
43
|
|
36
44
|
#if this is the begining of a comment block then start a new function doc
|
37
45
|
if line.rindex("/*", 1) == 0
|
38
|
-
#logic to add a new function section to the erb file
|
39
46
|
next
|
40
47
|
end
|
41
48
|
|
42
49
|
#if this is the end of a comment block then there is nothing to do
|
43
50
|
if line.rindex("*/", 1) == 0
|
44
51
|
#end the function section of the erb file
|
52
|
+
collective.push(items)
|
53
|
+
items = Hash.new
|
45
54
|
next
|
46
55
|
end
|
47
56
|
|
@@ -51,7 +60,6 @@ class Docme
|
|
51
60
|
|
52
61
|
#parts[0] == the attribute name
|
53
62
|
attribute = cleanAttribute(parts[0])
|
54
|
-
#add the attribute to the doc
|
55
63
|
|
56
64
|
content = parts[1].lstrip
|
57
65
|
|
@@ -61,10 +69,12 @@ class Docme
|
|
61
69
|
#add the attribute to the doc
|
62
70
|
puts attribute
|
63
71
|
block_flag = 1
|
72
|
+
block_attr = attribute
|
64
73
|
next
|
65
74
|
end
|
66
75
|
|
67
76
|
#add content to the doc
|
77
|
+
items.store(attribute, content)
|
68
78
|
puts attribute
|
69
79
|
puts content
|
70
80
|
end
|
@@ -75,7 +85,6 @@ class Docme
|
|
75
85
|
|
76
86
|
#parts[0] == the attribute name
|
77
87
|
attribute = cleanAttribute(parts[0])
|
78
|
-
#add the attribute to the doc
|
79
88
|
|
80
89
|
content = parts[1].lstrip
|
81
90
|
|
@@ -89,6 +98,7 @@ class Docme
|
|
89
98
|
#put the var_description in the doc
|
90
99
|
puts var_name
|
91
100
|
puts var_description
|
101
|
+
block_content.store(var_name, var_description)
|
92
102
|
next
|
93
103
|
end
|
94
104
|
|
@@ -103,11 +113,15 @@ class Docme
|
|
103
113
|
#put the content
|
104
114
|
puts attribute
|
105
115
|
puts content
|
116
|
+
block_content.store(attribute, content)
|
106
117
|
next
|
107
118
|
end
|
108
119
|
|
109
120
|
#if code flag is set and we reached the end of a block, then we reached the end of a code block, unset the flag
|
110
121
|
if code_flag == 1 && line.rindex("}",0) == 0
|
122
|
+
items.store(block_attr, code)
|
123
|
+
block_attr = nil
|
124
|
+
code = ""
|
111
125
|
code_flag = 0
|
112
126
|
next
|
113
127
|
end
|
@@ -115,25 +129,23 @@ class Docme
|
|
115
129
|
#if the block flag is set and we reach the end of a block, then we reached the end of a regular block, unset flag
|
116
130
|
if block_flag == 1 && line.rindex("}",0) == 0
|
117
131
|
block_flag = 0
|
132
|
+
items.store(block_attr, block_content)
|
133
|
+
block_attr = nil
|
134
|
+
block_content = Hash.new
|
135
|
+
next
|
118
136
|
end
|
119
137
|
|
120
138
|
#if we are in a code block, then return lines as is
|
121
139
|
if code_flag == 1
|
122
140
|
puts line
|
141
|
+
code.concat(line)
|
123
142
|
next
|
124
143
|
end
|
125
144
|
|
126
145
|
|
127
146
|
end
|
128
147
|
|
129
|
-
|
130
|
-
ERB.new(@template).result(binding)
|
131
|
-
end
|
148
|
+
renderSite(collective)
|
132
149
|
|
133
|
-
def save(site)
|
134
|
-
FIle.open(site, "w+") do |f|
|
135
|
-
f.write(render)
|
136
|
-
end
|
137
|
-
end
|
138
150
|
end
|
139
151
|
end
|
data/lib/docme/utils.rb
CHANGED
@@ -1,8 +1,110 @@
|
|
1
|
-
#
|
1
|
+
#docme utils
|
2
|
+
|
3
|
+
template = '<!DOCTYPE html>
|
4
|
+
<html>
|
5
|
+
|
6
|
+
<head>
|
7
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
8
|
+
</head>
|
9
|
+
|
10
|
+
<link href="//netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css" rel="stylesheet" media="screen">
|
11
|
+
|
12
|
+
|
13
|
+
<body>
|
14
|
+
|
15
|
+
<% for borg in collective %>
|
16
|
+
<div class="panel panel-default">
|
17
|
+
<% for attribute in borg %>
|
18
|
+
<% if attribute[0] == "title" %>
|
19
|
+
<div class="panel-heading">
|
20
|
+
<h3 class="panel-title"><% attribute[1] %></h3>
|
21
|
+
</div>
|
22
|
+
<% end %>
|
23
|
+
<div class="panel-body">
|
24
|
+
Panel Content
|
25
|
+
</div>
|
26
|
+
</div>
|
27
|
+
|
28
|
+
<% end %>
|
29
|
+
<% end %>
|
30
|
+
|
31
|
+
<script src="//netdna.bootstrapcdn.com/bootstrap/3.1.1/js/bootstrap.min.js"></script>
|
32
|
+
</body>
|
33
|
+
|
34
|
+
</html>'
|
2
35
|
|
3
36
|
def cleanAttribute(attr)
|
4
37
|
attr = attr.delete("+[")
|
5
38
|
attr = attr.delete("]")
|
6
39
|
attr = attr.delete("-")
|
7
40
|
return attr
|
8
|
-
end
|
41
|
+
end
|
42
|
+
|
43
|
+
def renderSite(content)
|
44
|
+
|
45
|
+
@collective = content
|
46
|
+
|
47
|
+
puts content
|
48
|
+
|
49
|
+
template = '<!DOCTYPE html>
|
50
|
+
<html>
|
51
|
+
|
52
|
+
<head>
|
53
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
54
|
+
</head>
|
55
|
+
|
56
|
+
<link href="https://netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css" rel="stylesheet" media="screen">
|
57
|
+
|
58
|
+
|
59
|
+
<body>
|
60
|
+
|
61
|
+
<% for @borg in @collective %>
|
62
|
+
<div class="panel panel-primary">
|
63
|
+
<% for @attribute in @borg %>
|
64
|
+
<% if @attribute[0] == "title" %>
|
65
|
+
<div class="panel-heading">
|
66
|
+
<h2 class="panel-title"><%= @attribute[1] %></h2>
|
67
|
+
</div>
|
68
|
+
<div class="panel-body">
|
69
|
+
<% end %>
|
70
|
+
<% if @attribute[0] != "title"%>
|
71
|
+
<% if @attribute[1].class == Hash %>
|
72
|
+
<h4><%= @attribute[0] %></h4>
|
73
|
+
<table class="table">
|
74
|
+
<% for @item in @attribute[1]%>
|
75
|
+
<tr>
|
76
|
+
<th><%= @item[0] %></th>
|
77
|
+
<td><%= @item[1] %></td>
|
78
|
+
</tr>
|
79
|
+
<% end %>
|
80
|
+
</table>
|
81
|
+
<% end %>
|
82
|
+
<% if @attribute[0] == "example" %>
|
83
|
+
<h4><%= @attribute[0] %></h4>
|
84
|
+
<div class ="well">
|
85
|
+
<pre><code><%= @attribute[1] %></code></pre>
|
86
|
+
</div>
|
87
|
+
<% end %>
|
88
|
+
<% if @attribute[0] != "example" && @attribute[0] != "title" && @attribute[1].class != Hash%>
|
89
|
+
<h4><%= @attribute[0]%></h4>
|
90
|
+
<p><%= @attribute[1] %></p>
|
91
|
+
<% end %>
|
92
|
+
<% end %>
|
93
|
+
<% end %>
|
94
|
+
</div>
|
95
|
+
</div>
|
96
|
+
<% end %>
|
97
|
+
|
98
|
+
<script src="https://netdna.bootstrapcdn.com/bootstrap/3.1.1/js/bootstrap.min.js"></script>
|
99
|
+
</body>
|
100
|
+
|
101
|
+
</html>'
|
102
|
+
|
103
|
+
renderer = ERB.new(template)
|
104
|
+
|
105
|
+
File.open("index.html", "w+") do |f|
|
106
|
+
f.write(renderer.result(binding))
|
107
|
+
end
|
108
|
+
|
109
|
+
end
|
110
|
+
|