frontendloader 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
data/README.rdoc ADDED
@@ -0,0 +1,14 @@
1
+ #Frontend Loader
2
+
3
+ ##usage:
4
+
5
+ fel init
6
+
7
+ creates a config yaml file, where you can name files and variables, and prioritize the loading of certain scripts and styles.
8
+
9
+ fel compile
10
+
11
+ - Reads the directory containing the FrontendLoader.yml for .less files, .mustache templates and .js scripts.
12
+ - Compiles the .less files down to css, includes the mustache templates.
13
+ - Joins the mustache templates into a single javascript object: templates = {}
14
+ - Joins javascript files together and yui compresses if requested.
data/bin/fel ADDED
@@ -0,0 +1,9 @@
1
+ #!/usr/bin/env ruby
2
+ require 'frontendloader'
3
+ fel = FrontendLoader.new
4
+ case ARGV[0]
5
+ when "init"
6
+ fel.init_app
7
+ when "compile"
8
+ fel.compile
9
+ end
@@ -0,0 +1,167 @@
1
+ require 'jscat'
2
+ require 'filestojs'
3
+ require 'yaml'
4
+
5
+ class FrontendLoader
6
+
7
+ attr_accessor :resources_path
8
+
9
+ def initialize
10
+ version = '0.0.1'
11
+ @gem_path = Gem.path[0]+"/gems/frontendloader-"+version
12
+ @resources_path = Gem.path[0]+"/gems/frontendloader-"+version+"/resources"
13
+ end
14
+
15
+ def init_app
16
+ config_path = @resources_path+"/FrontendLoader.yml"
17
+ guard_path = @resources_path+"/Guardfile"
18
+ %x[cp #{config_path} FrontendLoader.yml]
19
+ %x[cp #{guard_path} Guardfile]
20
+ puts "Created basic FrontendLoader app"
21
+ end
22
+
23
+ def boilerplate
24
+ load_settings
25
+ end
26
+
27
+
28
+ def load_settings
29
+ if File.exists? 'FrontendLoader.yml'
30
+ @settings = YAML.load_file('FrontendLoader.yml')
31
+ return true
32
+ else
33
+ puts 'Run fel init first yo'
34
+ return false
35
+ end
36
+ end
37
+
38
+ def compile
39
+ return false unless load_settings
40
+
41
+ #less
42
+
43
+ less_files = Dir.glob("*.less")
44
+
45
+ if less_files.length > 0 then
46
+
47
+ less_files.delete("style.less")
48
+ less_string = ""
49
+ less_files.each { |file|
50
+ puts "Loading #{file}..."
51
+ file = file.gsub(".less","")
52
+ less_string = less_string + "@import '#{file}'; \n"
53
+ File.open('style.less','w') { |f|
54
+ f.write(less_string)
55
+ }
56
+ }
57
+ %x[lessc style.less style.css]
58
+ # %x[rm style.less]
59
+
60
+ end
61
+
62
+
63
+ #TEMPLATES
64
+
65
+ template_joiner = FilesToJs.new({
66
+ :file_dir => '.',
67
+ :file_format => @settings['templates']['format'],
68
+ :js_object_name => @settings['templates']['varname'],
69
+ :output => @settings['templates']['varname']+".js",
70
+ })
71
+ template_joiner.write_js
72
+
73
+
74
+
75
+ #Javascript (includes joined templates)
76
+
77
+
78
+ javascript = JsCat.new({
79
+ :js_dir => '.',
80
+ :prioritize => @settings['javascript']['prioritize'],
81
+ :ignore => ['js.js'],
82
+ :compress => @settings['javascript']['compress'],
83
+ :output => 'js.js'
84
+ })
85
+
86
+ %x[rm templates.js]
87
+
88
+ puts "Compiled into js.js and style.css"
89
+
90
+ end
91
+
92
+
93
+ def create_view(view_title)
94
+ return false unless load_settings
95
+
96
+ style_format = @settings['css']['framework']
97
+ style_directory = @settings['css']['directory']
98
+ style_string = ".#{view_title} {
99
+
100
+ }
101
+ "
102
+
103
+ if File.exists? "#{view_title}.#{@settings['css']['framework']}" then
104
+ puts "View already exists"
105
+ return false
106
+ end
107
+
108
+
109
+ File.open("#{style_directory}/#{view_title}.less",'w') { |f|
110
+ f.write(style_string)
111
+ }
112
+
113
+ classwords = view_title.split('_')
114
+ classwords.each {|word|
115
+ word.capitalize!
116
+ }
117
+
118
+ classname = classwords.join
119
+
120
+ if classwords.last != "View" then classname = classname+"View" end
121
+
122
+ js_directory = @settings['javascript']['directory']
123
+
124
+ js_string = ""
125
+
126
+ viewtemplate = File.open("#{@resources_path}/js/mootools/View.js",'r').read
127
+ js_string = js_string+viewtemplate.gsub('VIEWCLASSNAME',classname).gsub('VIEWTITLE',view_title)
128
+
129
+
130
+ File.open("#{js_directory}/#{classname}.js",'w') { |f|
131
+ f.write(js_string)
132
+ }
133
+
134
+ templates_directory = @settings['templates']['directory']
135
+ templates_format = @settings['templates']['format']
136
+
137
+ File.open("#{templates_directory}/#{view_title}.#{templates_format}",'w') { |f|
138
+ f.write("")
139
+ }
140
+
141
+
142
+ end
143
+
144
+
145
+
146
+
147
+
148
+
149
+
150
+
151
+
152
+
153
+
154
+
155
+
156
+
157
+
158
+
159
+
160
+
161
+
162
+
163
+
164
+
165
+
166
+
167
+ end
@@ -0,0 +1,23 @@
1
+ # FRONTENDLOADER CONFIG
2
+
3
+ javascript:
4
+ framework: "mootools"
5
+ directory: "."
6
+ compress: false
7
+ prioritize:
8
+ ignore:
9
+ -"js.js"
10
+
11
+
12
+ css:
13
+ framework: "less"
14
+ directory: "."
15
+ prioritize:
16
+ ignore:
17
+
18
+
19
+ templates:
20
+ format: "mustache"
21
+ varname: "templates"
22
+ directory: "."
23
+ ignore:
@@ -0,0 +1,15 @@
1
+ # FrontendLoader Guardfile
2
+
3
+ ignore_paths 'js.js','templates.js', 'lfc.js'
4
+
5
+ guard 'shell' do
6
+ watch(/(.*).js/) {|m| `fel compile` }
7
+ end
8
+
9
+ guard 'shell' do
10
+ watch(/(.*).less/) {|m| `fel compile` }
11
+ end
12
+
13
+ guard 'shell' do
14
+ watch(/(.*).mustache/) {|m| `fel compile` }
15
+ end
metadata ADDED
@@ -0,0 +1,96 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: frontendloader
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Daniel Sim
9
+ - Exploding Box Productions
10
+ autorequire:
11
+ bindir: bin
12
+ cert_chain: []
13
+ date: 2011-10-28 00:00:00.000000000Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: jscat
17
+ requirement: &70286025774940 !ruby/object:Gem::Requirement
18
+ none: false
19
+ requirements:
20
+ - - ! '>='
21
+ - !ruby/object:Gem::Version
22
+ version: 1.0.2
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: *70286025774940
26
+ - !ruby/object:Gem::Dependency
27
+ name: filestojs
28
+ requirement: &70286025774420 !ruby/object:Gem::Requirement
29
+ none: false
30
+ requirements:
31
+ - - ! '>='
32
+ - !ruby/object:Gem::Version
33
+ version: 1.0.1
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: *70286025774420
37
+ - !ruby/object:Gem::Dependency
38
+ name: guard
39
+ requirement: &70286025773820 !ruby/object:Gem::Requirement
40
+ none: false
41
+ requirements:
42
+ - - ! '>='
43
+ - !ruby/object:Gem::Version
44
+ version: 0.8.8
45
+ type: :runtime
46
+ prerelease: false
47
+ version_requirements: *70286025773820
48
+ - !ruby/object:Gem::Dependency
49
+ name: guard-shell
50
+ requirement: &70286025773220 !ruby/object:Gem::Requirement
51
+ none: false
52
+ requirements:
53
+ - - ! '>='
54
+ - !ruby/object:Gem::Version
55
+ version: 0.2.0
56
+ type: :runtime
57
+ prerelease: false
58
+ version_requirements: *70286025773220
59
+ description: Accelerated front end development
60
+ email: dan@explodingbox.com
61
+ executables:
62
+ - fel
63
+ extensions: []
64
+ extra_rdoc_files: []
65
+ files:
66
+ - README.rdoc
67
+ - lib/FrontEndLoader.rb
68
+ - resources/FrontEndLoader.yml
69
+ - resources/Guardfile
70
+ - bin/fel
71
+ homepage: https://github.com/explodingbox/FrontEndLoader
72
+ licenses: []
73
+ post_install_message:
74
+ rdoc_options: []
75
+ require_paths:
76
+ - lib
77
+ required_ruby_version: !ruby/object:Gem::Requirement
78
+ none: false
79
+ requirements:
80
+ - - ! '>='
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ required_rubygems_version: !ruby/object:Gem::Requirement
84
+ none: false
85
+ requirements:
86
+ - - ! '>='
87
+ - !ruby/object:Gem::Version
88
+ version: '0'
89
+ requirements: []
90
+ rubyforge_project:
91
+ rubygems_version: 1.8.10
92
+ signing_key:
93
+ specification_version: 3
94
+ summary: A command line interface for rapid creation of web app interfaces, compiling
95
+ less, js and mustache files into two requests
96
+ test_files: []