arcabouco 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: c4df75f821808c5663d31e05c98aad88e02a6239
4
+ data.tar.gz: 56dde7619e5ccfb22ef0569f20358e8bd7fe9f20
5
+ SHA512:
6
+ metadata.gz: ed26a9f6523304eacd9bcdbbc91d9486a3f5c7d845043d8580f4b42fdb342cc722004fee669984a6b2cb34cde4adcc317371622fc8d0bbf4c652c04344e7d79c
7
+ data.tar.gz: b049c7abb99db89e56bc8aa7fc9e900bd80b718b80c0007acadc3264aee74e2e7bead3a3decca7968945ac0e6686362026619a572eb6006f3910d92a1869e5b0
data/README.md ADDED
@@ -0,0 +1,4 @@
1
+ [![Code Climate](https://codeclimate.com/github/iugu/arcabouco.png)](https://codeclimate.com/github/iugu/arcabouco)
2
+ [![Build Status](https://travis-ci.org/iugu/arcabouco.png?branch=master)](https://travis-ci.org/iugu/arcabouco)
3
+
4
+ Arcabouco - Framework for WebApp
data/Rakefile ADDED
@@ -0,0 +1,28 @@
1
+ #!/usr/bin/env rake
2
+ begin
3
+ require 'bundler/setup'
4
+ rescue LoadError
5
+ puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
6
+ end
7
+
8
+ #APP_RAKEFILE = File.expand_path("../sandbox/Rakefile", __FILE__)
9
+ #load 'rails/tasks/engine.rake'
10
+ #
11
+
12
+
13
+ Bundler::GemHelper.install_tasks
14
+
15
+ require "rake/testtask"
16
+
17
+ # desc "Testing"
18
+ #
19
+ # task :test do
20
+ # 1
21
+ # end
22
+
23
+ Rake::TestTask.new() do |t|
24
+ t.libs << "test"
25
+ t.pattern = "test/**/*_test.rb"
26
+ end
27
+
28
+ task :default => :test
data/bin/arcabouco ADDED
@@ -0,0 +1,24 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ lib = File.dirname(__FILE__) + '/../lib'
4
+
5
+ require 'rubygems'
6
+ require 'bundler'
7
+ begin
8
+ Bundler.setup(:default, :development)
9
+ rescue Bundler::BundlerError => e
10
+ $stderr.puts e.message
11
+ $stderr.puts "Run `bundle install` to install missing gems"
12
+ exit e.status_code
13
+ end
14
+ Bundler.require
15
+
16
+ if File.file?(lib + '/arcabouco/version.rb')
17
+ $LOAD_PATH << lib
18
+ else
19
+ gem 'arcabouco'
20
+ end
21
+
22
+ require 'arcabouco'
23
+
24
+ Arcabouco::Command.run
@@ -0,0 +1,17 @@
1
+ module Arcabouco
2
+ class Application
3
+ def initialize
4
+ configure_root_directory
5
+ puts "Configured root #{Arcabouco.root}"
6
+ puts "Configured gem root #{Arcabouco.gem_root}"
7
+ end
8
+
9
+ private
10
+
11
+ def configure_root_directory
12
+ Arcabouco.gem_root = File.expand_path("../..",__FILE__)
13
+ Dir.chdir "."
14
+ Arcabouco.root = File.expand_path Dir.getwd
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,20 @@
1
+ module Arcabouco
2
+
3
+ def self.root
4
+ @@root
5
+ end
6
+
7
+ def self.root=(root)
8
+ @@root = root
9
+ end
10
+
11
+ def self.gem_root
12
+ @@gem_root
13
+ end
14
+
15
+ def self.gem_root=(root)
16
+ @@gem_root = root
17
+ end
18
+
19
+ end
20
+
@@ -0,0 +1,53 @@
1
+ require 'slop'
2
+
3
+ module Arcabouco
4
+
5
+ class Command
6
+ def self.run(args = ARGV)
7
+ new.run(args)
8
+ end
9
+
10
+ def initialize
11
+ end
12
+
13
+ def run(args = ARGV)
14
+ opts = Slop.parse do
15
+ banner 'Usage: arcabouco [options]'
16
+
17
+ on 's', 'server', 'Run as server'
18
+ on 'b', 'build', 'Build'
19
+ end
20
+ Arcabouco::Application.new
21
+ if opts.server?
22
+ run_server
23
+ elsif opts.build?
24
+ run_build
25
+ else
26
+ puts opts
27
+ end
28
+ end
29
+
30
+ private
31
+
32
+ def help
33
+ program = File.basename($0)
34
+ [
35
+ "#{program}:",
36
+ "documentation",
37
+ "goes here"
38
+ ].join("\n")
39
+ end
40
+
41
+ def run_server
42
+ Arcabouco::Server.new.run
43
+ end
44
+
45
+ def run_build
46
+ server = Arcabouco::Server.new
47
+ server.build()
48
+ end
49
+
50
+ end
51
+
52
+ end
53
+
@@ -0,0 +1,13 @@
1
+ require 'compass'
2
+
3
+
4
+ Compass.configuration do |compass|
5
+ compass.sprite_load_path = [ 'app/sprites' ]
6
+ compass.images_dir = 'app/media'
7
+ compass.css_dir = 'app/css'
8
+ compass.sass_dir = 'app/css'
9
+ compass.javascripts_dir = 'app/js'
10
+ compass.relative_assets = true
11
+ compass.http_generated_images_path = '/app.assets/media'
12
+ end
13
+
@@ -0,0 +1,114 @@
1
+ require 'sinatra'
2
+ require 'sinatra/base'
3
+ require 'rack/test'
4
+ require 'sprockets'
5
+ require 'compass'
6
+ require 'sprockets-sass'
7
+ require 'handlebars_assets'
8
+ require 'pathname'
9
+
10
+ Encoding.default_external = Encoding::UTF_8
11
+ Encoding.default_internal = Encoding::UTF_8
12
+ HandlebarsAssets::Config.template_namespace = 'JST'
13
+
14
+ module Arcabouco
15
+
16
+ class WebServer < Sinatra::Base
17
+ attr_accessor :base_dir
18
+
19
+ set :views, Proc.new { Arcabouco.root + '/app' }
20
+
21
+ def initialize()
22
+ self.base_dir = Arcabouco.root
23
+ super
24
+ end
25
+
26
+ def relative_to
27
+ "../" + Pathname.new(File.expand_path('../templates', File.dirname(__FILE__))).relative_path_from(Pathname.new(Arcabouco.root)).to_s
28
+ end
29
+
30
+ get '/manifest.appcache' do
31
+ erb :"#{relative_to}/manifest", :locals => { :assets => $environment }
32
+ end
33
+
34
+ get '/*' do
35
+ haml :"#{relative_to}/index", locals: { :assets => $environment }, layout: false
36
+ end
37
+ end
38
+
39
+ class Server
40
+ attr_accessor :root
41
+ attr_accessor :rack
42
+ attr_accessor :env
43
+
44
+ def initialize
45
+ self.root = Arcabouco.root
46
+ setup_env
47
+ setup_rack
48
+ end
49
+
50
+ def setup_env
51
+ self.env = Sprockets::Environment.new
52
+ self.env.append_path 'app/media'
53
+ self.env.append_path 'app/js'
54
+ self.env.append_path 'app/css'
55
+ self.env.append_path HandlebarsAssets.path
56
+ self.env.append_path File.join(Arcabouco.gem_root,'assets','css')
57
+ self.env.append_path File.join(Arcabouco.gem_root,'assets','js')
58
+ end
59
+
60
+ def get_env
61
+ self.env
62
+ end
63
+
64
+ def get_rack
65
+ self.rack
66
+ end
67
+
68
+ def setup_rack
69
+ app = Arcabouco::WebServer.new
70
+
71
+ # app_css.write_to( Arcabouco.root + "/public/app-#{app_css.digest}.min.css" )
72
+ $environment = self.get_env()
73
+ self.rack = Rack::Builder.new do
74
+ map '/app.assets' do
75
+ run $environment
76
+ end
77
+ run app
78
+ end
79
+ self.rack
80
+ end
81
+
82
+ def compile_view(path,output)
83
+ browser = Rack::Test::Session.new(Rack::MockSession.new(rack))
84
+ response = browser.get path, {}
85
+ File.open(Arcabouco.root + "/public/" + output, 'w+') do |f|
86
+ f.puts response.body
87
+ end
88
+ end
89
+
90
+ def prepare_env_for_build
91
+ self.env.js_compressor = :uglify
92
+ self.env.css_compressor = :sass
93
+ end
94
+
95
+ def build
96
+ FileUtils.mkpath Arcabouco.root + "/public"
97
+ FileUtils.mkpath Arcabouco.root + "/public/app.assets"
98
+
99
+ prepare_env_for_build
100
+
101
+ manifest = Sprockets::Manifest.new(env, Arcabouco.root + "/public/app.assets/manifest.json")
102
+ manifest.compile(%w(app.css app.js vendor.js vendor.css *.png))
103
+
104
+ compile_view "/", "index.html"
105
+ compile_view "/manifest.appcache", "manifest.appcache"
106
+ end
107
+
108
+ def run
109
+ thin = Rack::Handler.get('thin')
110
+ thin.run self.rack
111
+ end
112
+ end
113
+
114
+ end
@@ -0,0 +1,3 @@
1
+ module Arcabouco
2
+ VERSION = "0.1.0"
3
+ end
data/lib/arcabouco.rb ADDED
@@ -0,0 +1,7 @@
1
+ require "arcabouco/version"
2
+ require "arcabouco/base"
3
+ require "arcabouco/compass"
4
+ require "arcabouco/application"
5
+ require "arcabouco/server"
6
+
7
+ require "arcabouco/cmd"
@@ -0,0 +1,50 @@
1
+ @mixin for-hd()
2
+ @media only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (-o-min-device-pixel-ratio: 3/2), only screen and (min--moz-device-pixel-ratio: 1.5), only screen and (min-device-pixel-ratio: 1.5)
3
+ @content
4
+
5
+ @mixin for-ios-hd()
6
+ @media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min-device-pixel-ratio: 2)
7
+ @content
8
+
9
+ @mixin for-no-js()
10
+ .no-js body
11
+ @content
12
+
13
+ @mixin for-screen()
14
+ @media only screen
15
+ @content
16
+
17
+ @mixin for-print()
18
+ @media only print
19
+ @content
20
+
21
+ @mixin for-mobile-portrait()
22
+ @media only screen and ( max-width: 479px)
23
+ @content
24
+ .mq-mp
25
+ @content
26
+
27
+ @mixin for-mobile-landscape()
28
+ @media only screen and (max-width: 767px) and (min-width: 480px)
29
+ @content
30
+ .mp-ml
31
+ @content
32
+
33
+ @mixin for-tablets()
34
+ @media only screen and (max-width: 1024px) and (min-width: 768px)
35
+ @content
36
+ .mp-tb
37
+ @content
38
+
39
+ @mixin for-large-screens( $start-width: 768px )
40
+ @media only screen and (min-width: $start-width)
41
+ @content
42
+ .mq-ls
43
+ @content
44
+
45
+ @mixin for-small-screens( $max-width: 767px )
46
+ @media only screen and (max-width: $max-width )
47
+ @content
48
+ .mq-sm
49
+ @content
50
+
@@ -0,0 +1,8 @@
1
+ /*
2
+ * Adding a UTF-8 Character to Fix áé
3
+ * This is a manifest file that'll automatically include all the stylesheets available in this directory
4
+ * and any sub-directories. You're free to add application-wide styles to this file and they'll appear at
5
+ * the top of the compiled file, but it's generally better to create a new file per style scope.
6
+ *= require_self
7
+ *= require arcabouco-entry.sass
8
+ */
@@ -0,0 +1,9 @@
1
+ @charset "UTF-8"
2
+
3
+ @import "reset"
4
+ @import "core"
5
+
6
+ // Default Rendering Styles
7
+ @import "no-js"
8
+
9
+ @import 'base'
File without changes
@@ -0,0 +1,13 @@
1
+ @charset "UTF-8"
2
+
3
+ @import "compass/css3/background-size"
4
+ @import "compass/css3/images"
5
+ @import "compass/utilities/sprites"
6
+ @import "compass/css3"
7
+
8
+ // @import "variables"
9
+ // @import "iux/variables"
10
+
11
+ @import "mixins"
12
+ @import "adaptative-mixins"
13
+ // @import "sprite-mixins"
@@ -0,0 +1,28 @@
1
+ @mixin box-mode
2
+ box-sizing: border-box
3
+ -ms-box-sizing: border-box
4
+ -moz-box-sizing: border-box
5
+ -webkit-box-sizing: border-box
6
+
7
+ @mixin block( $size:1 )
8
+ width: #{($size * $baseBlockSize)}
9
+
10
+ @mixin text-overflow()
11
+ overflow: hidden
12
+ text-overflow: ellipsis
13
+ white-space: nowrap
14
+
15
+ @mixin transition( $transition )
16
+ -webkit-transition: $transition
17
+ -moz-transition: $transition
18
+ -ms-transition: $transition
19
+ -o-transition: $transition
20
+ transition: $transition
21
+
22
+ @mixin user-select( $select )
23
+ -webkit-user-select: $select
24
+ -moz-user-select: $select
25
+ -ms-user-select: $select
26
+ -o-user-select: $select
27
+ user-select: $select
28
+
@@ -0,0 +1,16 @@
1
+ @include for-no-js()
2
+ div.js-warning
3
+ width: 100%
4
+ height: 100%
5
+ background: #FF0000
6
+ position: absolute
7
+ top: 0px
8
+ left: 0px
9
+
10
+ .wrapper
11
+ display: none
12
+
13
+ div.js-warning .wrapper
14
+ display: block
15
+ padding: 20px
16
+
@@ -0,0 +1,199 @@
1
+ @import "compass/css3"
2
+ // HTML5 Reset :: style.css
3
+ // ----------------------------------------------------------
4
+ // We have learned much from/been inspired by/taken code where offered from:
5
+ //
6
+ // Eric Meyer :: http://ericmeyer.com
7
+ // HTML5 Doctor :: http://html5doctor.com
8
+ // and the HTML5 Boilerplate :: http://html5boilerplate.com
9
+
10
+ // Let's default this puppy out
11
+ // -------------------------------------------------------------------------------
12
+
13
+ html, 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, figure, footer, header, hgroup, menu, nav, section, menu, time, mark, audio, video
14
+ margin: 0
15
+ padding: 0
16
+ border: 0
17
+ outline: 0
18
+ font-size: 100%
19
+ vertical-align: baseline
20
+ background: transparent
21
+ -webkit-text-size-adjust: 100%
22
+ -ms-text-size-adjust: 100%
23
+
24
+ html
25
+ font-family: "Arial"
26
+ height: 100%
27
+ width: 100%
28
+ position: relative
29
+ @include box-sizing( border-box )
30
+
31
+ audio,canvas,video
32
+ display: inline-block
33
+ *display: inline
34
+ *zoom: 1
35
+
36
+ article, aside, figure, footer, header, hgroup, nav, section, details, figcaption
37
+ display: block
38
+
39
+ // force a vertical scrollbar to prevent a jumpy page
40
+ // html.desktop
41
+ // overflow-y: scroll
42
+
43
+ html.mobile
44
+ overflow-y: auto
45
+
46
+ // we use a lot of ULs that aren't bulleted. don't forget to restore the bullets within content. */
47
+ ul
48
+ list-style: none
49
+
50
+ blockquote, q
51
+ quotes: none
52
+
53
+ blockquote:before, blockquote:after, q:before, q:after
54
+ content: ''
55
+ content: none
56
+
57
+ a
58
+ margin: 0
59
+ padding: 0
60
+ font-size: 100%
61
+ vertical-align: baseline
62
+ background: transparent
63
+
64
+ del
65
+ text-decoration: line-through
66
+
67
+ abbr[title], dfn[title]
68
+ border-bottom: 1px dotted #000
69
+ cursor: help
70
+
71
+ // tables still need cellspacing="0" in the markup
72
+ table
73
+ border-collapse: collapse
74
+ border-spacing: 0
75
+ th
76
+ font-weight: bold
77
+ vertical-align: bottom
78
+ td
79
+ font-weight: normal
80
+ vertical-align: top
81
+
82
+ hr
83
+ display: block
84
+ height: 1px
85
+ border: 0
86
+ border-top: 1px solid #ccc
87
+ margin: 1em 0
88
+ padding: 0
89
+
90
+ input, select
91
+ vertical-align: middle
92
+
93
+ pre
94
+ white-space: pre
95
+ white-space: pre-wrap
96
+ white-space: pre-line
97
+
98
+ input[type="radio"]
99
+ vertical-align: text-bottom
100
+ input[type="checkbox"]
101
+ vertical-align: bottom
102
+ *vertical-align: baseline
103
+ .ie6 input
104
+ vertical-align: text-bottom
105
+
106
+ select, input, textarea
107
+ font: 99% sans-serif
108
+
109
+ table
110
+ font-size: inherit
111
+ font: 100%
112
+
113
+ // Accessible focus treatment
114
+ // people.opera.com/patrickl/experiments/keyboard/test
115
+ a:hover, a:active
116
+ outline: none
117
+
118
+ small
119
+ font-size: 85%
120
+
121
+ strong, th
122
+ font-weight: bold
123
+
124
+ td, td img
125
+ vertical-align: top
126
+
127
+ // Make sure sup and sub don't screw with your line-heights
128
+ // gist.github.com/413930
129
+ sub, sup
130
+ font-size: 75%
131
+ line-height: 0
132
+ position: relative
133
+ sup
134
+ top: -0.5em
135
+ sub
136
+ bottom: -0.25em
137
+
138
+ // standardize any monospaced elements
139
+ pre, code, kbd, samp
140
+ font-family: monospace, sans-serif
141
+
142
+ // hand cursor on clickable elements
143
+ .clickable,label, input[type=button], input[type=submit], button
144
+ cursor: pointer
145
+
146
+ // Webkit browsers add a 2px margin outside the chrome of form elements
147
+ button, input, select, textarea
148
+ margin: 0
149
+ font-size: 100%
150
+ vertical-align: middle
151
+
152
+ // make buttons play nice in IE
153
+ button
154
+ width: auto
155
+ *overflow: visible
156
+ line-height: normal
157
+
158
+ button::-moz-focus-inner,input::-moz-focus-inner
159
+ padding: 0px
160
+ margin: 0px
161
+
162
+ button, input[type="button"],input[type="reset"],input[type="submit"]
163
+ cursor: pointer
164
+ -webkit-appearance: button
165
+
166
+ input[type="search"]
167
+ -webkit-box-sizing: content-box
168
+ -moz-box-sizing: content-box
169
+ box-sizing: content-box
170
+ -webkit-appearance: textfield
171
+
172
+ input[type="search"]::-webkit-search-decoration,input[type="search"]::-webkit-search-cancel-button
173
+ -webkit-appearance: none
174
+
175
+ textarea
176
+ overflow: auto
177
+ vertical-align: top
178
+
179
+ // scale images in IE7 more attractively
180
+ .ie7 img
181
+ -ms-interpolation-mode: bicubic
182
+ // prevent BG image flicker upon hover
183
+ .ie6 html
184
+ filter: expression(document.execCommand("BackgroundImageCache", false, true))
185
+
186
+ // let's clear some floats
187
+ .auto-clear:before, .auto-clear:after
188
+ content: "\0020"
189
+ display: block
190
+ height: 0
191
+ overflow: hidden
192
+ .auto-clear:after
193
+ clear: both
194
+ margin-bottom: 20px
195
+ .auto-clear
196
+ zoom: 1
197
+
198
+ .clear
199
+ clear: both
@@ -0,0 +1,7 @@
1
+ //= require './core/capabilities'
2
+ //= require './core/environment'
3
+ //= require './core/debug'
4
+ //= require 'config'
5
+ //= require './core/boot'
6
+ //= require 'usecode'
7
+ //= require 'templates'
File without changes
@@ -0,0 +1,2 @@
1
+ app.debug "Starting WebApp Framework"
2
+