tonka 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +7 -0
  2. data/lib/tonka.rb +112 -42
  3. metadata +6 -8
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 03da4a022809e7159288945d16e7c2dfcdd4ad09
4
+ data.tar.gz: cae7de061ed44daa11720a6b2c597f8966a34b8a
5
+ SHA512:
6
+ metadata.gz: d182869c5e2079eb8c72076b4cf8cf2d660c653455f6b72e919cf3394e1d949a6a554bb557847d686adad43089096ff0c17812f1db862ed03fed37dbd59b429b
7
+ data.tar.gz: 69a14b5ade385298a2ee9c095f2857fab977868ff19f7b47003597141e544189257c98f3f058138fcf0f1f229f3e8d99ee53217536bb1e1f83ef1f51ffec2814
data/lib/tonka.rb CHANGED
@@ -1,3 +1,5 @@
1
+ require 'net/http'
2
+
1
3
  class Tonka
2
4
 
3
5
  attr_accessor :options, :site_name, :action, :messages
@@ -6,7 +8,7 @@ class Tonka
6
8
 
7
9
  def initialize(options=[])
8
10
 
9
- @version = "0.0.2b1";
11
+ @version = "0.0.3";
10
12
 
11
13
  @options = options || ARGV
12
14
  if !@options[0].nil?
@@ -18,24 +20,23 @@ class Tonka
18
20
  end
19
21
  end
20
22
 
21
- def make_directories(site_name)
22
- if !Dir.exist? site_name
23
- Dir.mkdir site_name
24
- Dir.mkdir "#{site_name}/stylesheets"
25
- puts "\t\tbuilt ".green+"#{site_name}/stylesheets/"
23
+ def make_directories
24
+ if !Dir.exist? $SITE_NAME
25
+ Dir.mkdir $SITE_NAME
26
+ Dir.mkdir "#{$SITE_NAME}/stylesheets"
27
+ puts "\t\tbuilt ".green+"#{$SITE_NAME}/stylesheets/"
26
28
 
27
- Dir.mkdir "#{site_name}/javascripts"
28
- puts "\t\tbuilt ".green+"#{site_name}/javascripts/"
29
+ Dir.mkdir "#{$SITE_NAME}/javascripts"
30
+ puts "\t\tbuilt ".green+"#{$SITE_NAME}/javascripts/"
29
31
  else
30
- puts "a '#{site_name}' directory already exists!"
32
+ puts "a '#{$SITE_NAME}' directory already exists!"
31
33
  display_usage
32
34
  end
33
35
  end
34
36
 
35
- def make_files(site_name)
36
- Tonka::HTML.new(site_name,@options)
37
- Tonka::CSS.new(site_name,@options)
38
- Tonka::JS.new(site_name,@options)
37
+ def make_files
38
+ Tonka::HTML.new(@options).render(@options)
39
+ Tonka::CSS.new(@options)
39
40
  end
40
41
 
41
42
  def parse_options(options=[])
@@ -51,25 +52,25 @@ class Tonka
51
52
  when "build"
52
53
  #handles the 'build' command
53
54
 
54
- @site_name = @options[1] || 'sites'
55
+ $SITE_NAME = @options[1] || 'sites'
55
56
 
56
57
  jquery = true if @options[2] == '-jquery'
57
58
  css_reset = true if @options[2] == '-jquery'
58
59
 
59
- make_directories(@site_name)
60
- make_files(@site_name)
60
+ make_directories
61
+ make_files
61
62
 
62
- puts "\n\t\tthe construction of "+"#{@site_name}".green+" is now complete!"
63
+ puts "\n\t\tthe construction of "+"#{$SITE_NAME}".green+" is now complete!"
63
64
 
64
65
  when "destroy"
65
66
  #handles the 'destroy' command
66
67
 
67
- @site_name = @options[1] || 'sites'
68
- if Dir.exist? @site_name
69
- system("rm -rf #{@site_name}")
70
- puts "\t\tdemolished ".red+"#{@site_name}"
68
+ $SITE_NAME = @options[1] || 'sites'
69
+ if Dir.exist? $SITE_NAME
70
+ system("rm -rf #{$SITE_NAME}")
71
+ puts "\t\tdemolished ".red+"#{$SITE_NAME}"
71
72
  else
72
- "Oops! There is no directory called #{@site_name}!"
73
+ "Oops! There is no directory called #{$SITE_NAME}!"
73
74
  end
74
75
 
75
76
  when "add"
@@ -82,7 +83,7 @@ class Tonka
82
83
  end
83
84
 
84
85
  def display_usage
85
- puts "usage: tonka <action> SITE_NAME [-options] BODY_TEXT\n\nThe most common actions:\n\nbuild\s\t\t\tbuilds a basic static site with the name passed in as SITE_NAME\n\nThe most common options:\n\n-jquery \t\tadds jquery to index.html file.\n-css_reset \t\tadds css resetters to style.css file."
86
+ puts "usage: tonka <action> SITE_NAME [-options] BODY_TEXT\n\nThe most common actions:\n\nbuild\s\t\t\tbuilds a basic static site with the name passed in as SITE_NAME\n\nThe most common options:\n\n-jquery \t\tadds jquery to index.html file.\n-underscore \t\tadds underscore.js to the javascripts folder and the index.html file.\n-backbone \t\tadds backbone.js to the javascripts folder and the index.html file."
86
87
  end
87
88
 
88
89
  end
@@ -91,42 +92,111 @@ class Tonka::HTML
91
92
  #CSS processing module
92
93
  attr_accessor :layout
93
94
 
94
- def initialize(site_name,options=[])
95
- site_name = site_name
96
- body = options[3] || ""
97
- jquery = true if options[2] == "-jquery"
98
- index_html = File.new("#{site_name}/index.html","w")
99
- @layout = "<!DOCTYPE html>\n<html>\n<head>\n<title>#{site_name}</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"stylesheets/style.css\" />#{ "\n<script type=\"text/javascript\" src=\"http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js\"></script>" if jquery == true }\n<script type=\"text/javascript\" src=\"javascripts/scripts.js\"></script>\n</head>\n<body>\n#{ body+"\n" }\</body>\n</html>"
100
- index_html.puts @layout
101
- index_html.close
102
- puts "\t\tbuilt ".green+"#{site_name}/index.html"
95
+ def initialize(options=[])
96
+ @layout_arrays = []
97
+ @layout_array_1 = ["<!DOCTYPE html>\n",
98
+ "<html>\n",
99
+ "<head>\n",
100
+ "\t<title>#{$SITE_NAME}</title>\n",
101
+ "\t<link rel=\"stylesheet\" type=\"text/css\" href=\"stylesheets/style.css\" />\n"]
102
+ @script_array = add_js_files(options)
103
+ @layout_array_2 = [
104
+ "</head>\n",
105
+ "<body>\n",
106
+ "\</body>\n",
107
+ "</html>"]
108
+
109
+
110
+
111
+
112
+ end
113
+
114
+ def render(options)
115
+ @index_html = File.new("#{$SITE_NAME}/index.html","w")
116
+ @layout = @layout_array_1.join("") + @script_array.join("") + @layout_array_2.join("")
117
+ @index_html.puts @layout
118
+ @index_html.close
119
+ puts "\t\tbuilt ".green+"#{$SITE_NAME}/index.html"
120
+
121
+ end
122
+
123
+ def add_js_files(options)
124
+ tags = []
125
+ options.each do |option|
126
+ library_name = option.gsub("-","")
127
+ if library_name == "backbone" && !options.include?("jquery")
128
+ jquery = Tonka::JS.new("jquery")
129
+ tags << jquery.script_tag
130
+ end
131
+ if library_name == "backbone" && !options.include?("underscore")
132
+ underscore = Tonka::JS.new("underscore")
133
+ tags << underscore.script_tag
134
+ end
135
+ Tonka::JS.libraries.each do |library|
136
+ if library[library_name]
137
+ js = Tonka::JS.new(library_name)
138
+ tags << js.script_tag
139
+
140
+ end
141
+ end
142
+ end
143
+ tags << Tonka::JS.new("app").script_tag
144
+ return tags
103
145
  end
146
+
147
+
104
148
  end
105
149
 
106
150
  class Tonka::CSS
107
151
  #CSS processing module
108
152
  attr_accessor :layout
109
153
 
110
- def initialize(site_name,options=[])
111
- style_css = File.new("#{site_name}/stylesheets/style.css","w")
154
+ def initialize(options=[])
155
+ style_css = File.new("#{$SITE_NAME}/stylesheets/style.css","w")
112
156
  style_css_content = "/* html5doctor.com Reset v1.6.1 - http://cssreset.com */\nhtml,body,div,span,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,abbr,address,cite,code,del,dfn,em,img,ins,kbd,q,samp,small,strong,sub,sup,var,b,i,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,figcaption,figure,footer,header,hgroup,menu,nav,section,summary,time,mark,audio,video{margin:0;padding:0;border:0;outline:0;font-size:100%;vertical-align:baseline;background:transparent}body{line-height:1}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}nav ul{list-style:none}blockquote,q{quotes:none}blockquote:before,blockquote:after,q:before,q:after{content:none}a{margin:0;padding:0;font-size:100%;vertical-align:baseline;background:transparent}ins{background-color:#ff9;color:#000;text-decoration:none}mark{background-color:#ff9;color:#000;font-style:italic;font-weight:bold}del{text-decoration:line-through}abbr[title],dfn[title]{border-bottom:1px dotted;cursor:help}table{border-collapse:collapse;border-spacing:0}hr{display:block;height:1px;border:0;border-top:1px solid #ccc;margin:1em 0;padding:0}input,select{vertical-align:middle}"
113
157
  style_css.puts style_css_content
114
158
  style_css.close
115
- puts "\t\tbuilt ".green+"#{site_name}/stylesheets/style.css"
159
+ puts "\t\tbuilt ".green+"#{$SITE_NAME}/stylesheets/style.css"
116
160
  end
117
161
  end
118
162
 
119
163
  class Tonka::JS
120
164
  #CSS processing module
121
- attr_accessor :layout
165
+ attr_accessor :layout, :script_tag, :libraries
166
+
167
+ def self.libraries
168
+ [
169
+ {"jquery" => "http://code.jquery.com/jquery-1.10.2.min.js"},
170
+ {"underscore" => "https://raw.github.com/jashkenas/underscore/master/underscore.js"},
171
+ {"backbone" => "https://raw.github.com/jashkenas/backbone/master/backbone.js"}
172
+ ]
173
+ end
122
174
 
123
- def initialize(site_name,options=[])
124
- scripts_js = File.new("#{site_name}/javascripts/scripts.js","w")
125
- scripts_js_content = "console.log('feed me javascripts')"
126
- scripts_js.puts scripts_js_content
127
- scripts_js.close
128
- puts "\t\tbuilt ".green+"#{site_name}/javascripts/scripts.js"
175
+ def initialize(file_name,options=[])
176
+ @script_tag = generate_file(file_name)
129
177
  end
178
+
179
+ def generate_file(file_name)
180
+
181
+ js_file = File.new("#{$SITE_NAME}/javascripts/#{file_name}.js","w")
182
+ if file_name == "app"
183
+ js_file_content = "console.log('feed me javascripts')"
184
+ else
185
+ uri = ''
186
+ Tonka::JS.libraries.each do |library|
187
+ uri = library[file_name] if library[file_name]
188
+ end
189
+ js_file_content = Net::HTTP.get(URI(uri))
190
+ end
191
+ js_file.puts js_file_content
192
+ js_file.close
193
+ script_tag = "\t<script src='/javascripts/#{file_name}.js'></script>\n"
194
+ puts "\t\tbuilt ".green+"#{$SITE_NAME}/javascripts/#{file_name}.js"
195
+ return script_tag
196
+ end
197
+
198
+
199
+
130
200
  end
131
201
 
132
202
  class String
metadata CHANGED
@@ -1,8 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tonka
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
5
- prerelease:
4
+ version: 0.0.4
6
5
  platform: ruby
7
6
  authors:
8
7
  - Omar Delarosa
@@ -23,26 +22,25 @@ files:
23
22
  homepage: http://rubygems.org/gems/tonka
24
23
  licenses:
25
24
  - MIT
25
+ metadata: {}
26
26
  post_install_message:
27
27
  rdoc_options: []
28
28
  require_paths:
29
29
  - lib
30
30
  required_ruby_version: !ruby/object:Gem::Requirement
31
- none: false
32
31
  requirements:
33
- - - ! '>='
32
+ - - '>='
34
33
  - !ruby/object:Gem::Version
35
34
  version: '0'
36
35
  required_rubygems_version: !ruby/object:Gem::Requirement
37
- none: false
38
36
  requirements:
39
- - - ! '>='
37
+ - - '>='
40
38
  - !ruby/object:Gem::Version
41
39
  version: '0'
42
40
  requirements: []
43
41
  rubyforge_project:
44
- rubygems_version: 1.8.25
42
+ rubygems_version: 2.1.11
45
43
  signing_key:
46
- specification_version: 3
44
+ specification_version: 4
47
45
  summary: Tonka!
48
46
  test_files: []