frontendloader 0.0.1
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.
- data/README.rdoc +14 -0
- data/bin/fel +9 -0
- data/lib/FrontEndLoader.rb +167 -0
- data/resources/FrontEndLoader.yml +23 -0
- data/resources/Guardfile +15 -0
- metadata +96 -0
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,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:
|
data/resources/Guardfile
ADDED
@@ -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: []
|