arcabouco 0.1.0

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.
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
+