grounds 0.0.1

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: 518239f5829185ec886ed17a8eabf2355f752fa0
4
+ data.tar.gz: d257dee4c67cadf6ede99359c82673c8bc34f742
5
+ SHA512:
6
+ metadata.gz: e52b26e7b14e253a01acac9ef1ce14b57f6b4f1ec7a9cb7bc629f95d4d591f88ccff6ca7b74ee63db7ee3dde40d498e136ebb3291dc9d69f7c0dbb9f4f883a08
7
+ data.tar.gz: 9eeb8a070cbff001b9f1880d3ad018fbefae68172a74a730d8d9479b28918d8da4c5a65a6f74d8ea27a901cba2b362f4d236f8e5e1fb00295abadae72f60fbcc
data/.gitignore ADDED
@@ -0,0 +1,2 @@
1
+ /pkg
2
+ /tmp
data/Gemfile ADDED
@@ -0,0 +1,2 @@
1
+ source 'https://rubygems.org'
2
+ gemspec
data/Gemfile.lock ADDED
@@ -0,0 +1,22 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ grounds (0.0.1)
5
+ rack (~> 1.5.0)
6
+ rack-slashenforce (= 0.0.2)
7
+
8
+ GEM
9
+ remote: https://rubygems.org/
10
+ specs:
11
+ rack (1.5.2)
12
+ rack-slashenforce (0.0.2)
13
+ rack
14
+ rake (10.1.0)
15
+
16
+ PLATFORMS
17
+ ruby
18
+
19
+ DEPENDENCIES
20
+ bundler (~> 1.3)
21
+ grounds!
22
+ rake (~> 10.1)
data/Makefile ADDED
@@ -0,0 +1,16 @@
1
+ GEM = pkg/grounds-$(shell cat VERSION).gem
2
+
3
+ all: test html Gemfile.lock clean
4
+
5
+ test:
6
+ bats --tap t
7
+ html:
8
+ make -wC public
9
+ Gemfile.lock: Gemfile grounds.gemspec
10
+ bundle --no-color
11
+ $(GEM): Gemfile.lock lib/rack/grounds.rb
12
+ rake build
13
+ install: $(GEM)
14
+ rake install
15
+ clean:
16
+ git clean -Xdf
data/Rakefile ADDED
@@ -0,0 +1 @@
1
+ require 'bundler/gem_tasks'
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.0.1
data/bin/grounds ADDED
@@ -0,0 +1,65 @@
1
+ #!/usr/bin/env bash
2
+ set -o errexit
3
+
4
+ : ${language=en}
5
+ : ${charset=utf-8}
6
+ : ${viewport='width=device-width'}
7
+
8
+ --language() { language=$1; }
9
+ --attributes() { attributes+=" $1"; }
10
+ --charset() { charset=$1; }
11
+ --viewport() { viewport=$1; }
12
+
13
+ preamble=(language attributes charset viewport)
14
+ is-preamble-keyword()
15
+ { printf '%s\n' ${preamble[*]} | grep "^$1\$" >/dev/null; }
16
+ maybe-insert-preamble()
17
+ if ! `is-preamble-keyword $1`; then
18
+ head+=("$(printf "$charset_tag" "$charset")")
19
+ head+=("$(printf "$viewport_tag" "$viewport")")
20
+ maybe-insert-preamble() { :; }
21
+ for x in ${preamble[*]}; do
22
+ eval 'function --'$x' { echo >&2 $0: '$x' must come first; }'
23
+ done; fi
24
+
25
+ : ${html_tag:='<html lang="%s"%s>'}
26
+ : ${charset_tag:='<meta charset="%s">'}
27
+ : ${viewport_tag:='<meta name="viewport" content="%s">'}
28
+ : ${title_tag:='<title>%s</title>'}
29
+ : ${javascript_tag:='<script src="%s"></script>'}
30
+ : ${stylesheet_tag:='<link rel="stylesheet" href="%s">'}
31
+
32
+ --head() { head+=("$1"); }
33
+ --body() { body+=("$1"); }
34
+ --foot() { foot+=("$1"); }
35
+ --title() { --head "$(printf "$title_tag" "$1")"; }
36
+ --stylesheet() { --head "$(printf "$stylesheet_tag" "$1")"; }
37
+ --javascript() { --foot "$(printf "$javascript_tag" "$1")"; }
38
+ --asset() case "$1" in
39
+ *.css) --stylesheet "$1";;
40
+ *.js) --javascript "$1";;
41
+ *) echo >&2 "$0: $1: ignoring unknown asset";; esac
42
+
43
+ while read keyword words; do
44
+ if [[ $keyword ]]; then
45
+ keyword=$(echo $keyword | tr A-Z a-z | sed 's/:$//')
46
+ [[ $words ]] || words=$keyword keyword=asset
47
+ if type >&/dev/null -- "--$keyword"; then
48
+ maybe-insert-preamble $keyword
49
+ --$keyword "${words[@]}"
50
+ elif [[ $keyword != '#' ]]; then
51
+ echo >&2 "$0: unknown keyword \`$keyword'"; fi
52
+ else
53
+ while read line; do --body "$line"; done; fi; done
54
+
55
+ maybe-insert-preamble
56
+ body=("${body[@]}" "${foot[@]}")
57
+ sed 's/^ *$//' <<EOF
58
+ <!doctype html>
59
+ `printf "$html_tag" "$language" "$attributes"`
60
+ <head>`[[ $head ]] && printf '\n %s' "${head[@]}"`
61
+ </head>
62
+ <body>`[[ $body ]] && printf '\n %s' "${body[@]}"`
63
+ </body>
64
+ </html>
65
+ EOF
data/grounds.gemspec ADDED
@@ -0,0 +1,15 @@
1
+ Gem::Specification.new do |gem|
2
+ gem.name = 'grounds'
3
+ gem.version = `cat VERSION`
4
+ gem.summary = 'Grounds, HTML app toolkit'
5
+ gem.license = 'MIT'
6
+ gem.author = 'Daniel Brockman'
7
+ gem.email = 'daniel@brockman.se'
8
+ gem.files = `git ls-files`.split($/)
9
+ gem.bindir = 'ruby-bin'
10
+ gem.executables = 'grounds'
11
+ gem.add_dependency 'rack', '~> 1.5.0'
12
+ gem.add_dependency 'rack-slashenforce', '= 0.0.2'
13
+ gem.add_development_dependency 'bundler', '~> 1.3'
14
+ gem.add_development_dependency 'rake', '~> 10.1'
15
+ end
@@ -0,0 +1,8 @@
1
+ require 'rack'
2
+ require 'rack-slashenforce'
3
+
4
+ Rack::Grounds = Rack::Builder.new {
5
+ use Rack::AppendTrailingSlash
6
+ use Rack::Static, urls: [''], root: 'public', index: 'index.html'
7
+ run -> { [404, { 'Content-Type' => 'text/plain' }, ['Not found']] }
8
+ }
data/public/Makefile ADDED
@@ -0,0 +1,4 @@
1
+ all: index.html
2
+
3
+ %.html: %.html.grounds
4
+ ../bin/grounds <$< >$@
data/public/index.css ADDED
File without changes
data/public/index.html ADDED
@@ -0,0 +1,12 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta name="viewport" content="width=device-width">
6
+ <link rel="stylesheet" href="index.css">
7
+ </head>
8
+ <body>
9
+ <p>Grounds is the modern web developer’s best friend.</p>
10
+ <script src="index.js"></script>
11
+ </body>
12
+ </html>
@@ -0,0 +1,4 @@
1
+ index.css
2
+ index.js
3
+
4
+ <p>Grounds is the modern web developer’s best friend.</p>
data/public/index.js ADDED
File without changes
data/ruby-bin/grounds ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+ program = "../bin/#{File.basename(__FILE__)}"
3
+ exec File.expand_path(program, File.dirname(__FILE__)), *ARGV
@@ -0,0 +1,13 @@
1
+ # -*- sh -*-
2
+ @test "empty input" {
3
+ diff <<'^D' - <(bin/grounds </dev/null); }
4
+ <!doctype html>
5
+ <html lang="en">
6
+ <head>
7
+ <meta charset="utf-8">
8
+ <meta name="viewport" content="width=device-width">
9
+ </head>
10
+ <body>
11
+ </body>
12
+ </html>
13
+ ^D
@@ -0,0 +1,30 @@
1
+ # -*- sh -*-
2
+ @test "all features" {
3
+ bin/grounds <<'^D' |
4
+ Language: sv
5
+ Attributes: ng-app="foo"
6
+ Charset: iso-8859-1
7
+ Viewport: initial-scale=1.0
8
+ Title: Example
9
+ foo.js
10
+ foo.css
11
+
12
+ <p>foo</p>
13
+ <p>bar</p>
14
+ ^D
15
+ diff <<'^D' - <(cat); }
16
+ <!doctype html>
17
+ <html lang="sv" ng-app="foo">
18
+ <head>
19
+ <meta charset="iso-8859-1">
20
+ <meta name="viewport" content="initial-scale=1.0">
21
+ <title>Example</title>
22
+ <link rel="stylesheet" href="foo.css">
23
+ </head>
24
+ <body>
25
+ <p>foo</p>
26
+ <p>bar</p>
27
+ <script src="foo.js"></script>
28
+ </body>
29
+ </html>
30
+ ^D
metadata ADDED
@@ -0,0 +1,117 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: grounds
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Daniel Brockman
8
+ autorequire:
9
+ bindir: ruby-bin
10
+ cert_chain: []
11
+ date: 2013-10-25 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rack
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: 1.5.0
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: 1.5.0
27
+ - !ruby/object:Gem::Dependency
28
+ name: rack-slashenforce
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '='
32
+ - !ruby/object:Gem::Version
33
+ version: 0.0.2
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '='
39
+ - !ruby/object:Gem::Version
40
+ version: 0.0.2
41
+ - !ruby/object:Gem::Dependency
42
+ name: bundler
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ~>
46
+ - !ruby/object:Gem::Version
47
+ version: '1.3'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ~>
53
+ - !ruby/object:Gem::Version
54
+ version: '1.3'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rake
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: '10.1'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ~>
67
+ - !ruby/object:Gem::Version
68
+ version: '10.1'
69
+ description:
70
+ email: daniel@brockman.se
71
+ executables:
72
+ - grounds
73
+ extensions: []
74
+ extra_rdoc_files: []
75
+ files:
76
+ - .gitignore
77
+ - Gemfile
78
+ - Gemfile.lock
79
+ - Makefile
80
+ - Rakefile
81
+ - VERSION
82
+ - bin/grounds
83
+ - grounds.gemspec
84
+ - lib/rack/grounds.rb
85
+ - public/Makefile
86
+ - public/index.css
87
+ - public/index.html
88
+ - public/index.html.grounds
89
+ - public/index.js
90
+ - ruby-bin/grounds
91
+ - t/01-empty-input.bats
92
+ - t/02-all-features.bats
93
+ homepage:
94
+ licenses:
95
+ - MIT
96
+ metadata: {}
97
+ post_install_message:
98
+ rdoc_options: []
99
+ require_paths:
100
+ - lib
101
+ required_ruby_version: !ruby/object:Gem::Requirement
102
+ requirements:
103
+ - - '>='
104
+ - !ruby/object:Gem::Version
105
+ version: '0'
106
+ required_rubygems_version: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - '>='
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ requirements: []
112
+ rubyforge_project:
113
+ rubygems_version: 2.1.9
114
+ signing_key:
115
+ specification_version: 4
116
+ summary: Grounds, HTML app toolkit
117
+ test_files: []