template_params 0.1.0 → 0.1.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.
- checksums.yaml +4 -4
- data/.rubocop.yml +107 -0
- data/CHANGELOG.md +21 -0
- data/Gemfile +2 -1
- data/README.md +18 -18
- data/Rakefile +12 -3
- data/bin/console +1 -0
- data/bin/rake +17 -0
- data/bin/rubocop +17 -0
- data/lib/template_params.rb +2 -0
- data/lib/template_params/assertion.rb +7 -5
- data/lib/template_params/version.rb +2 -1
- data/template_params.gemspec +16 -12
- metadata +21 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8b1cf802577dadb1e6b66d780aa233b362d7b98b
|
4
|
+
data.tar.gz: dd783b0cd18b60cf08aaf1422ace70b483790a2e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 98592ae0903886adcdda4806cb46ebca78fd6dd103d32b34495bc696b0f8c151ef16f75e2c63a87de58a526666fe0f604223cc72a87af7cfb18d02ffe73b6c14
|
7
|
+
data.tar.gz: 1f8538a1ce7aa5f6fc9db3fe5fe20fad09ca624dc70ff696bc2bc8dacd99b2c7af116449523e34880a07fa61b0f3bb4f5ef72142083d7b4a4e910e86b712d069
|
data/.rubocop.yml
ADDED
@@ -0,0 +1,107 @@
|
|
1
|
+
AllCops:
|
2
|
+
TargetRubyVersion: 2.3
|
3
|
+
|
4
|
+
# The number of lines in a method is not a useful metric compared to `AbcSize`.
|
5
|
+
# It's common to have very long methods (> 50 lines) which are quite simple. For
|
6
|
+
# example, a method that returns a long string with only a few interpolations.
|
7
|
+
Metrics/MethodLength:
|
8
|
+
Enabled: false
|
9
|
+
|
10
|
+
Style/AlignParameters:
|
11
|
+
EnforcedStyle: with_fixed_indentation
|
12
|
+
|
13
|
+
# Use the semantic style. If a block has side effects use `do`, and if it is
|
14
|
+
# pure use `{}`. This style is too nuanced for a linter, so the cop is
|
15
|
+
# disabled.
|
16
|
+
Style/BlockDelimiters:
|
17
|
+
Enabled: false
|
18
|
+
|
19
|
+
Style/BracesAroundHashParameters:
|
20
|
+
EnforcedStyle: context_dependent
|
21
|
+
|
22
|
+
# Used consistently, both leading and trailing styles are valid, but
|
23
|
+
# Singlebrook happens to use the trailing style.
|
24
|
+
Style/DotPosition:
|
25
|
+
EnforcedStyle: trailing
|
26
|
+
|
27
|
+
# Use double negation wherever it would otherwise be impractical to convert
|
28
|
+
# a value to an actual boolean.
|
29
|
+
Style/DoubleNegation:
|
30
|
+
Enabled: false
|
31
|
+
|
32
|
+
Style/EmptyElse:
|
33
|
+
EnforcedStyle: empty
|
34
|
+
|
35
|
+
# Use a postfix (aka. modifier) conditional operator for single lines unless
|
36
|
+
# doing so would exceed 60 chars.
|
37
|
+
Style/IfUnlessModifier:
|
38
|
+
MaxLineLength: 60
|
39
|
+
|
40
|
+
# The decision about when to use a guard clause is too nuanced for a linter.
|
41
|
+
Style/GuardClause:
|
42
|
+
Enabled: false
|
43
|
+
|
44
|
+
# In a multiline method call, put the closing parenthesis on its own line.
|
45
|
+
# The first argument may either be on the first line, or the second. Both of the
|
46
|
+
# following are correct:
|
47
|
+
#
|
48
|
+
# ```
|
49
|
+
# # A. correct
|
50
|
+
# create(:user,
|
51
|
+
# client: foo,
|
52
|
+
# long_line: blah
|
53
|
+
# )
|
54
|
+
#
|
55
|
+
# # B. also correct
|
56
|
+
# create(
|
57
|
+
# :user,
|
58
|
+
# client: foo,
|
59
|
+
# long_line: blah
|
60
|
+
# )
|
61
|
+
#
|
62
|
+
# # C. not preferred
|
63
|
+
# user = create :user,
|
64
|
+
# client: foo,
|
65
|
+
# long_line: blah
|
66
|
+
# ```
|
67
|
+
#
|
68
|
+
# Rubocop supports B, but not A. This project allows both, so this cop is
|
69
|
+
# disabled.
|
70
|
+
Style/MultilineMethodCallBraceLayout:
|
71
|
+
Enabled: false
|
72
|
+
|
73
|
+
Style/MultilineMethodCallIndentation:
|
74
|
+
EnforcedStyle: indented
|
75
|
+
|
76
|
+
Style/MultilineOperationIndentation:
|
77
|
+
EnforcedStyle: indented
|
78
|
+
|
79
|
+
# This is a new cop in rubocop 0.41, and I'm not sure if I want to adopt it yet.
|
80
|
+
Style/NumericLiteralPrefix:
|
81
|
+
Enabled: false
|
82
|
+
|
83
|
+
# Use `x > 0` because it is more specific than `x.positive?`.
|
84
|
+
# However, `x.zero?` is acceptable because it is specific enough.
|
85
|
+
Style/NumericPredicate:
|
86
|
+
Enabled: false
|
87
|
+
|
88
|
+
# This is a new cop, and has a bug: https://github.com/bbatsov/rubocop/issues/3515
|
89
|
+
# When that bug is fixed, we can try it again.
|
90
|
+
Style/SafeNavigation:
|
91
|
+
Enabled: false
|
92
|
+
|
93
|
+
# The decision between double quotes and single quotes is not something Leon
|
94
|
+
# or I feel strongly about, but we might as well be consistent, especially if
|
95
|
+
# rubocop is going to `--auto-correct` for us. Double quotes are slightly
|
96
|
+
# easier to read and there is no difference in performance. -Jared 2016-02-18
|
97
|
+
Style/StringLiterals:
|
98
|
+
EnforcedStyle: double_quotes
|
99
|
+
|
100
|
+
# Predicate methods, aka. question-mark methods, such as `def x?; @x; end` are
|
101
|
+
# acceptable. See https://github.com/bbatsov/rubocop/issues/2736 for discussion.
|
102
|
+
Style/TrivialAccessors:
|
103
|
+
AllowPredicates: true
|
104
|
+
|
105
|
+
# Use numbers wherever you like in your variables. Who cares.
|
106
|
+
Style/VariableNumber:
|
107
|
+
Enabled: false
|
data/CHANGELOG.md
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
# template_params Changelog
|
2
|
+
|
3
|
+
## 0.1.1 (2016-10-10)
|
4
|
+
|
5
|
+
Just updating a few development tools and writing a little documentation.
|
6
|
+
|
7
|
+
Breaking changes
|
8
|
+
|
9
|
+
- None
|
10
|
+
|
11
|
+
New features
|
12
|
+
|
13
|
+
- None
|
14
|
+
|
15
|
+
Fixed
|
16
|
+
|
17
|
+
- None
|
18
|
+
|
19
|
+
## 0.1.0
|
20
|
+
|
21
|
+
Initial release
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -1,37 +1,37 @@
|
|
1
1
|
# TemplateParams
|
2
2
|
|
3
|
-
Runtime type-check for template preconditions
|
4
|
-
|
5
|
-
There should be at least one of these assertions in almost every template.
|
3
|
+
Runtime type-check for **template preconditions**, including instance variables and local
|
4
|
+
variables. Think of this as the method signature of a template, as the **documentation**.
|
6
5
|
|
7
6
|
## Installation
|
8
7
|
|
9
|
-
Add
|
8
|
+
1. Add it to your Gemfile and run `bundle`.
|
10
9
|
|
11
|
-
```ruby
|
12
|
-
gem 'template_params'
|
13
|
-
```
|
10
|
+
```ruby
|
11
|
+
gem 'template_params'
|
12
|
+
```
|
14
13
|
|
15
|
-
|
14
|
+
2. If you're using rails, add a helper method.
|
16
15
|
|
17
|
-
|
16
|
+
```ruby
|
17
|
+
# app/helpers/application_helper.rb
|
18
|
+
def template_param(*args, &block)
|
19
|
+
::TemplateParams::Assertion.assert(*args, &block)
|
20
|
+
end
|
21
|
+
```
|
18
22
|
|
19
|
-
|
23
|
+
If you're not using rails, let me know how you install it, and I'll put that here.
|
20
24
|
|
21
|
-
|
22
|
-
# app/helpers/application_helper.rb
|
23
|
-
require "template_params"
|
24
|
-
def template_param(*args, &block)
|
25
|
-
::TemplateParams::Assertion.assert(*args, &block)
|
26
|
-
end
|
25
|
+
## Usage
|
27
26
|
|
27
|
+
```ruby
|
28
28
|
# Assert `poll` is defined. If not, raises an `ArgumentError` (the "arguments"
|
29
29
|
# of the template are invalid).
|
30
|
-
template_param { poll }
|
30
|
+
template_param { poll }
|
31
31
|
|
32
32
|
# Assert `@course` is defined. Meaningless because instance variables are
|
33
33
|
# always defined.
|
34
|
-
template_param { @course }
|
34
|
+
template_param { @course }
|
35
35
|
|
36
36
|
# Assert `poll.is_a?(::Poll)`. If not, raises a `TypeError`.
|
37
37
|
template_param(::Poll) { poll }
|
data/Rakefile
CHANGED
@@ -1,6 +1,15 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
require "bundler/gem_tasks"
|
2
|
-
require "rspec/core/rake_task"
|
3
3
|
|
4
|
-
|
4
|
+
require "rubocop/rake_task"
|
5
|
+
RuboCop::RakeTask.new
|
6
|
+
|
7
|
+
require "rspec/core/rake_task"
|
8
|
+
RSpec::Core::RakeTask.new(:spec) do |t|
|
9
|
+
t.verbose = false
|
10
|
+
end
|
5
11
|
|
6
|
-
task
|
12
|
+
# Default task: lint then test
|
13
|
+
task default: [] # in case it hasn't been set
|
14
|
+
Rake::Task[:default].clear
|
15
|
+
task default: [:rubocop, :spec]
|
data/bin/console
CHANGED
data/bin/rake
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
3
|
+
#
|
4
|
+
# This file was generated by Bundler.
|
5
|
+
#
|
6
|
+
# The application 'rake' is installed as part of a gem, and
|
7
|
+
# this file is here to facilitate running it.
|
8
|
+
#
|
9
|
+
|
10
|
+
require "pathname"
|
11
|
+
ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
|
12
|
+
Pathname.new(__FILE__).realpath)
|
13
|
+
|
14
|
+
require "rubygems"
|
15
|
+
require "bundler/setup"
|
16
|
+
|
17
|
+
load Gem.bin_path("rake", "rake")
|
data/bin/rubocop
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
3
|
+
#
|
4
|
+
# This file was generated by Bundler.
|
5
|
+
#
|
6
|
+
# The application 'rubocop' is installed as part of a gem, and
|
7
|
+
# this file is here to facilitate running it.
|
8
|
+
#
|
9
|
+
|
10
|
+
require "pathname"
|
11
|
+
ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
|
12
|
+
Pathname.new(__FILE__).realpath)
|
13
|
+
|
14
|
+
require "rubygems"
|
15
|
+
require "bundler/setup"
|
16
|
+
|
17
|
+
load Gem.bin_path("rubocop", "rubocop")
|
data/lib/template_params.rb
CHANGED
@@ -1,8 +1,9 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
require "method_source"
|
2
3
|
|
3
4
|
module TemplateParams
|
5
|
+
# A simple assertion suitable for view template preconditions.
|
4
6
|
class Assertion
|
5
|
-
|
6
7
|
# @api public
|
7
8
|
def initialize(type, options)
|
8
9
|
@type = type
|
@@ -45,7 +46,7 @@ module TemplateParams
|
|
45
46
|
# @api private
|
46
47
|
def assert_type(value)
|
47
48
|
unless @type.nil? || value.is_a?(@type) || allow_nil && value.nil?
|
48
|
-
|
49
|
+
raise TypeError, format("Expected %s, got %s", @type, value.class)
|
49
50
|
end
|
50
51
|
end
|
51
52
|
|
@@ -59,11 +60,12 @@ module TemplateParams
|
|
59
60
|
#
|
60
61
|
# @api private
|
61
62
|
def udef_msg(name_error, block)
|
62
|
-
|
63
|
+
prefix = "Undefined template parameter: #{name_error}"
|
63
64
|
if block.respond_to?(:source)
|
64
|
-
|
65
|
+
format("%s: %s", prefix, block.source.strip)
|
66
|
+
else
|
67
|
+
prefix
|
65
68
|
end
|
66
|
-
msg
|
67
69
|
end
|
68
70
|
end
|
69
71
|
end
|
data/template_params.gemspec
CHANGED
@@ -1,22 +1,26 @@
|
|
1
1
|
# coding: utf-8
|
2
|
-
|
2
|
+
# frozen_string_literal: true
|
3
|
+
lib = File.expand_path("../lib", __FILE__)
|
3
4
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
-
require
|
5
|
+
require "template_params/version"
|
5
6
|
|
6
7
|
Gem::Specification.new do |spec|
|
7
|
-
spec.name
|
8
|
-
spec.version
|
9
|
-
spec.authors
|
10
|
-
spec.email
|
11
|
-
spec.summary
|
12
|
-
spec.homepage
|
13
|
-
spec.license
|
14
|
-
spec.files
|
15
|
-
|
16
|
-
|
8
|
+
spec.name = "template_params"
|
9
|
+
spec.version = TemplateParams::VERSION
|
10
|
+
spec.authors = ["Jared Beck"]
|
11
|
+
spec.email = ["jared@jaredbeck.com"]
|
12
|
+
spec.summary = "Parameter assertions for your view templates"
|
13
|
+
spec.homepage = "https://github.com/jaredbeck/template_params"
|
14
|
+
spec.license = "MIT"
|
15
|
+
spec.files = `git ls-files -z`.
|
16
|
+
split("\x0").
|
17
|
+
reject { |f| f.match(%r{^(test|spec|features)/}) }
|
18
|
+
spec.bindir = "exe"
|
19
|
+
spec.executables = []
|
17
20
|
spec.require_paths = ["lib"]
|
18
21
|
spec.add_runtime_dependency "method_source", "~> 0.8.2"
|
19
22
|
spec.add_development_dependency "bundler", "~> 1.10"
|
20
23
|
spec.add_development_dependency "rake", "~> 10.0"
|
21
24
|
spec.add_development_dependency "rspec"
|
25
|
+
spec.add_development_dependency "rubocop"
|
22
26
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: template_params
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jared Beck
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-10-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: method_source
|
@@ -66,6 +66,20 @@ dependencies:
|
|
66
66
|
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rubocop
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
69
83
|
description:
|
70
84
|
email:
|
71
85
|
- jared@jaredbeck.com
|
@@ -75,13 +89,17 @@ extra_rdoc_files: []
|
|
75
89
|
files:
|
76
90
|
- ".gitignore"
|
77
91
|
- ".rspec"
|
92
|
+
- ".rubocop.yml"
|
78
93
|
- ".travis.yml"
|
94
|
+
- CHANGELOG.md
|
79
95
|
- CODE_OF_CONDUCT.md
|
80
96
|
- Gemfile
|
81
97
|
- LICENSE.txt
|
82
98
|
- README.md
|
83
99
|
- Rakefile
|
84
100
|
- bin/console
|
101
|
+
- bin/rake
|
102
|
+
- bin/rubocop
|
85
103
|
- bin/setup
|
86
104
|
- lib/template_params.rb
|
87
105
|
- lib/template_params/assertion.rb
|
@@ -107,7 +125,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
107
125
|
version: '0'
|
108
126
|
requirements: []
|
109
127
|
rubyforge_project:
|
110
|
-
rubygems_version: 2.
|
128
|
+
rubygems_version: 2.5.1
|
111
129
|
signing_key:
|
112
130
|
specification_version: 4
|
113
131
|
summary: Parameter assertions for your view templates
|