arbre 1.2.1 → 1.3.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.
Files changed (46) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +10 -0
  3. data/README.md +1 -1
  4. data/lib/arbre/context.rb +2 -1
  5. data/lib/arbre/element.rb +2 -1
  6. data/lib/arbre/version.rb +1 -1
  7. metadata +35 -46
  8. data/.gitignore +0 -10
  9. data/.rubocop.yml +0 -15
  10. data/.travis.yml +0 -16
  11. data/Gemfile +0 -25
  12. data/Gemfile.lock +0 -224
  13. data/Rakefile +0 -21
  14. data/arbre.gemspec +0 -24
  15. data/spec/arbre/integration/html_spec.rb +0 -249
  16. data/spec/arbre/unit/component_spec.rb +0 -44
  17. data/spec/arbre/unit/context_spec.rb +0 -35
  18. data/spec/arbre/unit/element_finder_methods_spec.rb +0 -116
  19. data/spec/arbre/unit/element_spec.rb +0 -271
  20. data/spec/arbre/unit/html/class_list_spec.rb +0 -16
  21. data/spec/arbre/unit/html/tag_attributes_spec.rb +0 -62
  22. data/spec/arbre/unit/html/tag_spec.rb +0 -115
  23. data/spec/arbre/unit/html/text_node_spec.rb +0 -5
  24. data/spec/changelog_spec.rb +0 -27
  25. data/spec/rails/integration/forms_spec.rb +0 -105
  26. data/spec/rails/integration/rendering_spec.rb +0 -99
  27. data/spec/rails/rails_spec_helper.rb +0 -42
  28. data/spec/rails/stub_app/config/database.yml +0 -3
  29. data/spec/rails/stub_app/config/routes.rb +0 -3
  30. data/spec/rails/stub_app/db/schema.rb +0 -3
  31. data/spec/rails/stub_app/log/.gitignore +0 -1
  32. data/spec/rails/stub_app/public/favicon.ico +0 -0
  33. data/spec/rails/support/mock_person.rb +0 -15
  34. data/spec/rails/templates/arbre/_partial.arb +0 -1
  35. data/spec/rails/templates/arbre/_partial_with_assignment.arb +0 -1
  36. data/spec/rails/templates/arbre/empty.arb +0 -0
  37. data/spec/rails/templates/arbre/page_with_arb_partial_and_assignment.arb +0 -3
  38. data/spec/rails/templates/arbre/page_with_assignment.arb +0 -1
  39. data/spec/rails/templates/arbre/page_with_erb_partial.arb +0 -3
  40. data/spec/rails/templates/arbre/page_with_partial.arb +0 -3
  41. data/spec/rails/templates/arbre/simple_page.arb +0 -8
  42. data/spec/rails/templates/erb/_partial.erb +0 -1
  43. data/spec/spec_helper.rb +0 -7
  44. data/spec/support/bundle.rb +0 -4
  45. data/tasks/lint.rake +0 -69
  46. data/tasks/release.rake +0 -6
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 27066f3cf1264e3ec0cb4e5498c05b706565055fe69fbc25afe98825c90915bd
4
- data.tar.gz: efe323ea9b3faddac096ca11d796231fd5d0872f8f4e1ffec71c2bbf452a5cd1
3
+ metadata.gz: 0c192e41b4dd924bcd01ee41b718ba77d3bc140bb0cc8da0c98c36f9fc8a4e4c
4
+ data.tar.gz: 5c25837e426eb3e02937e5bbd6acfb0dc44ed17d693fef7482596b53397f0c4a
5
5
  SHA512:
6
- metadata.gz: d40b99ace19107c5b2d9089d183cce4b2eebc5229475f1ac8965df1fb6a31412d5dc0787ad618063d966ef4821ce679bd0d77ddf16a38048f13dde26192d3acc
7
- data.tar.gz: 2346922bcc1c31da78a980ca68f20f7c8335a4fdf14c6cd90e766c23fea5cd70f0ec44aabf3ab989b9ae2f863f3b332c1e351fdb2096b59df56bef656ef324f6
6
+ metadata.gz: 700578cfd7370e84e888e361d30f74a640a011d9614e2b93530af7278ac8ac3772a6f72a0ac9a3b7e8f9f9defb4a8524b365e1cb9f17cdf46c5c0bce5f7b717b
7
+ data.tar.gz: 18da81bc8e4ca14c50cc7b99da96be67e1f52307a010d97aad017f872bc11a1ca747b8a66827a92b65b538680476c087a4bd0c5dbc1a121bdb830401fc104f1e
@@ -2,6 +2,12 @@
2
2
 
3
3
  ## Master (unreleased)
4
4
 
5
+ ## 1.3.0 [☰](https://github.com/activeadmin/arbre/compare/v1.2.1...v1.3.0)
6
+
7
+ * Drop ruby 2.3 support. [#152][] by [@deivid-rodriguez][]
8
+ * Drop ruby 2.4 support. [#177][] by [@deivid-rodriguez][]
9
+ * Fix ruby 2.7 kwargs warnings. [#202][] and [#205][] by [@deivid-rodriguez][]
10
+
5
11
  ## 1.2.1 [☰](https://github.com/activeadmin/arbre/compare/v1.2.0...v1.2.1)
6
12
 
7
13
  * Revert [#64][] to fix several regressions, at the cost of reintroducing [#46][]. [#121][] by [@deivid-rodriguez][]
@@ -83,6 +89,10 @@ Initial release and extraction from Active Admin
83
89
  [#78]: https://github.com/activeadmin/arbre/pull/78
84
90
  [#110]: https://github.com/activeadmin/arbre/pull/110
85
91
  [#121]: https://github.com/activeadmin/arbre/pull/121
92
+ [#152]: https://github.com/activeadmin/arbre/pull/152
93
+ [#177]: https://github.com/activeadmin/arbre/pull/177
94
+ [#202]: https://github.com/activeadmin/arbre/pull/202
95
+ [#205]: https://github.com/activeadmin/arbre/pull/205
86
96
 
87
97
  [@aramvisser]: https://github.com/aramvisser
88
98
  [@LTe]: https://github.com/LTe
data/README.md CHANGED
@@ -36,7 +36,7 @@ Tidelift will coordinate the fix and disclosure.
36
36
  [travis_badge]: http://img.shields.io/travis/activeadmin/arbre/master.svg
37
37
  [travis]: https://travis-ci.org/activeadmin/arbre
38
38
  [tidelift_badge]: https://tidelift.com/badges/github/activeadmin/arbre
39
- [tidelift]: https://tidelift.com/subscription/pkg/rubygems-arbre?utm_source=rubygems-arbre&utm_medium=readme
39
+ [tidelift]: https://tidelift.com/subscription/pkg/rubygems-arbre?utm_source=rubygems-arbre&utm_medium=referral&utm_campaign=readme
40
40
 
41
41
  [docs]: https://activeadmin.github.io/arbre/
42
42
  [stackoverflow]: http://stackoverflow.com/questions/tagged/arbre
@@ -1,4 +1,5 @@
1
1
  require 'arbre/element'
2
+ require 'ruby2_keywords'
2
3
 
3
4
  module Arbre
4
5
 
@@ -74,7 +75,7 @@ module Arbre
74
75
  # Webservers treat Arbre::Context as a string. We override
75
76
  # method_missing to delegate to the string representation
76
77
  # of the html.
77
- def method_missing(method, *args, &block)
78
+ ruby2_keywords def method_missing(method, *args, &block)
78
79
  if cached_html.respond_to? method
79
80
  cached_html.send method, *args, &block
80
81
  else
@@ -1,6 +1,7 @@
1
1
  require 'arbre/element/builder_methods'
2
2
  require 'arbre/element/proxy'
3
3
  require 'arbre/element_collection'
4
+ require 'ruby2_keywords'
4
5
 
5
6
  module Arbre
6
7
 
@@ -172,7 +173,7 @@ module Arbre
172
173
  # 3. Call the method on the helper object
173
174
  # 4. Call super
174
175
  #
175
- def method_missing(name, *args, &block)
176
+ ruby2_keywords def method_missing(name, *args, &block)
176
177
  if current_arbre_element.respond_to?(name)
177
178
  current_arbre_element.send name, *args, &block
178
179
  elsif assigns && assigns.has_key?(name)
@@ -1,3 +1,3 @@
1
1
  module Arbre
2
- VERSION = "1.2.1"
2
+ VERSION = "1.3.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: arbre
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.1
4
+ version: 1.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Greg Bell
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-04-12 00:00:00.000000000 Z
11
+ date: 2020-09-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -17,6 +17,9 @@ dependencies:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: 3.0.0
20
+ - - "<"
21
+ - !ruby/object:Gem::Version
22
+ version: '6.1'
20
23
  type: :runtime
21
24
  prerelease: false
22
25
  version_requirements: !ruby/object:Gem::Requirement
@@ -24,23 +27,41 @@ dependencies:
24
27
  - - ">="
25
28
  - !ruby/object:Gem::Version
26
29
  version: 3.0.0
27
- description: An Object Oriented DOM Tree in Ruby
30
+ - - "<"
31
+ - !ruby/object:Gem::Version
32
+ version: '6.1'
33
+ - !ruby/object:Gem::Dependency
34
+ name: ruby2_keywords
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: 0.0.2
40
+ - - "<"
41
+ - !ruby/object:Gem::Version
42
+ version: '1.0'
43
+ type: :runtime
44
+ prerelease: false
45
+ version_requirements: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - ">="
48
+ - !ruby/object:Gem::Version
49
+ version: 0.0.2
50
+ - - "<"
51
+ - !ruby/object:Gem::Version
52
+ version: '1.0'
53
+ description: Arbre makes it easy to generate HTML directly in Ruby
28
54
  email:
29
55
  - gregdbell@gmail.com
30
56
  executables: []
31
57
  extensions: []
32
- extra_rdoc_files: []
58
+ extra_rdoc_files:
59
+ - CHANGELOG.md
60
+ - README.md
33
61
  files:
34
- - ".gitignore"
35
- - ".rubocop.yml"
36
- - ".travis.yml"
37
62
  - CHANGELOG.md
38
- - Gemfile
39
- - Gemfile.lock
40
63
  - LICENSE
41
64
  - README.md
42
- - Rakefile
43
- - arbre.gemspec
44
65
  - docs/Gemfile
45
66
  - docs/_config.yml
46
67
  - docs/_includes/footer.html
@@ -69,39 +90,7 @@ files:
69
90
  - lib/arbre/rails/rendering.rb
70
91
  - lib/arbre/rails/template_handler.rb
71
92
  - lib/arbre/version.rb
72
- - spec/arbre/integration/html_spec.rb
73
- - spec/arbre/unit/component_spec.rb
74
- - spec/arbre/unit/context_spec.rb
75
- - spec/arbre/unit/element_finder_methods_spec.rb
76
- - spec/arbre/unit/element_spec.rb
77
- - spec/arbre/unit/html/class_list_spec.rb
78
- - spec/arbre/unit/html/tag_attributes_spec.rb
79
- - spec/arbre/unit/html/tag_spec.rb
80
- - spec/arbre/unit/html/text_node_spec.rb
81
- - spec/changelog_spec.rb
82
- - spec/rails/integration/forms_spec.rb
83
- - spec/rails/integration/rendering_spec.rb
84
- - spec/rails/rails_spec_helper.rb
85
- - spec/rails/stub_app/config/database.yml
86
- - spec/rails/stub_app/config/routes.rb
87
- - spec/rails/stub_app/db/schema.rb
88
- - spec/rails/stub_app/log/.gitignore
89
- - spec/rails/stub_app/public/favicon.ico
90
- - spec/rails/support/mock_person.rb
91
- - spec/rails/templates/arbre/_partial.arb
92
- - spec/rails/templates/arbre/_partial_with_assignment.arb
93
- - spec/rails/templates/arbre/empty.arb
94
- - spec/rails/templates/arbre/page_with_arb_partial_and_assignment.arb
95
- - spec/rails/templates/arbre/page_with_assignment.arb
96
- - spec/rails/templates/arbre/page_with_erb_partial.arb
97
- - spec/rails/templates/arbre/page_with_partial.arb
98
- - spec/rails/templates/arbre/simple_page.arb
99
- - spec/rails/templates/erb/_partial.erb
100
- - spec/spec_helper.rb
101
- - spec/support/bundle.rb
102
- - tasks/lint.rake
103
- - tasks/release.rake
104
- homepage: ''
93
+ homepage: https://github.com/activeadmin/arbre
105
94
  licenses:
106
95
  - MIT
107
96
  metadata: {}
@@ -113,14 +102,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
113
102
  requirements:
114
103
  - - ">="
115
104
  - !ruby/object:Gem::Version
116
- version: '2.3'
105
+ version: '2.5'
117
106
  required_rubygems_version: !ruby/object:Gem::Requirement
118
107
  requirements:
119
108
  - - ">="
120
109
  - !ruby/object:Gem::Version
121
110
  version: '0'
122
111
  requirements: []
123
- rubygems_version: 3.0.3
112
+ rubygems_version: 3.2.0.rc.1
124
113
  signing_key:
125
114
  specification_version: 4
126
115
  summary: An Object Oriented DOM Tree in Ruby
data/.gitignore DELETED
@@ -1,10 +0,0 @@
1
- *.gem
2
- .bundle
3
- pkg/*
4
- benchmarks
5
- .rvmrc
6
- .ruby-version
7
- .ruby-gemset
8
- tags
9
- .DS_Store
10
- docs/_site
@@ -1,15 +0,0 @@
1
- ---
2
-
3
- AllCops:
4
- DisabledByDefault: true
5
-
6
- DisplayCopNames: true
7
- DisplayStyleGuide: true
8
-
9
- TargetRubyVersion: 2.3
10
-
11
- Metrics:
12
- Enabled: false
13
-
14
- Layout/IndentHeredoc:
15
- Enabled: true
@@ -1,16 +0,0 @@
1
- language: ruby
2
- sudo: false
3
- before_install:
4
- - gem update --system 3.0.3
5
- - gem install bundler:2.0.1
6
- rvm:
7
- - 2.3.8
8
- - 2.4.5
9
- - 2.5.5
10
- - 2.6.2
11
- - jruby-9.1.17.0
12
- - jruby-9.2.6.0
13
- branches:
14
- only:
15
- - master
16
- cache: bundler
data/Gemfile DELETED
@@ -1,25 +0,0 @@
1
- source 'http://rubygems.org'
2
-
3
- gemspec
4
-
5
- gem 'rake'
6
-
7
- group :test do
8
- gem 'rspec'
9
- gem 'pry'
10
- end
11
-
12
- group :tools do
13
- gem 'rubocop'
14
- end
15
-
16
- group :release do
17
- gem 'chandler'
18
- end
19
-
20
- group :rails do
21
- gem 'rails', '>= 5.0.0.1' # fixes CVE-2016-6316
22
- gem 'rspec-rails'
23
- gem 'combustion'
24
- gem 'capybara'
25
- end
@@ -1,224 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- arbre (1.2.1)
5
- activesupport (>= 3.0.0)
6
-
7
- GEM
8
- remote: http://rubygems.org/
9
- specs:
10
- actioncable (5.2.3)
11
- actionpack (= 5.2.3)
12
- nio4r (~> 2.0)
13
- websocket-driver (>= 0.6.1)
14
- actionmailer (5.2.3)
15
- actionpack (= 5.2.3)
16
- actionview (= 5.2.3)
17
- activejob (= 5.2.3)
18
- mail (~> 2.5, >= 2.5.4)
19
- rails-dom-testing (~> 2.0)
20
- actionpack (5.2.3)
21
- actionview (= 5.2.3)
22
- activesupport (= 5.2.3)
23
- rack (~> 2.0)
24
- rack-test (>= 0.6.3)
25
- rails-dom-testing (~> 2.0)
26
- rails-html-sanitizer (~> 1.0, >= 1.0.2)
27
- actionview (5.2.3)
28
- activesupport (= 5.2.3)
29
- builder (~> 3.1)
30
- erubi (~> 1.4)
31
- rails-dom-testing (~> 2.0)
32
- rails-html-sanitizer (~> 1.0, >= 1.0.3)
33
- activejob (5.2.3)
34
- activesupport (= 5.2.3)
35
- globalid (>= 0.3.6)
36
- activemodel (5.2.3)
37
- activesupport (= 5.2.3)
38
- activerecord (5.2.3)
39
- activemodel (= 5.2.3)
40
- activesupport (= 5.2.3)
41
- arel (>= 9.0)
42
- activestorage (5.2.3)
43
- actionpack (= 5.2.3)
44
- activerecord (= 5.2.3)
45
- marcel (~> 0.3.1)
46
- activesupport (5.2.3)
47
- concurrent-ruby (~> 1.0, >= 1.0.2)
48
- i18n (>= 0.7, < 2)
49
- minitest (~> 5.1)
50
- tzinfo (~> 1.1)
51
- addressable (2.5.2)
52
- public_suffix (>= 2.0.2, < 4.0)
53
- arel (9.0.0)
54
- ast (2.4.0)
55
- builder (3.2.3)
56
- capybara (3.15.0)
57
- addressable
58
- mini_mime (>= 0.1.3)
59
- nokogiri (~> 1.8)
60
- rack (>= 1.6.0)
61
- rack-test (>= 0.6.3)
62
- regexp_parser (~> 1.2)
63
- xpath (~> 3.2)
64
- chandler (0.9.0)
65
- netrc
66
- octokit (>= 2.2.0)
67
- coderay (1.1.2)
68
- combustion (1.1.0)
69
- activesupport (>= 3.0.0)
70
- railties (>= 3.0.0)
71
- thor (>= 0.14.6)
72
- concurrent-ruby (1.1.5)
73
- crass (1.0.4)
74
- diff-lcs (1.3)
75
- erubi (1.8.0)
76
- faraday (0.15.4)
77
- multipart-post (>= 1.2, < 3)
78
- ffi (1.9.25-java)
79
- globalid (0.4.2)
80
- activesupport (>= 4.2.0)
81
- i18n (1.6.0)
82
- concurrent-ruby (~> 1.0)
83
- jar-dependencies (0.4.0)
84
- jaro_winkler (1.5.2)
85
- jaro_winkler (1.5.2-java)
86
- loofah (2.2.3)
87
- crass (~> 1.0.2)
88
- nokogiri (>= 1.5.9)
89
- mail (2.7.1)
90
- mini_mime (>= 0.1.1)
91
- marcel (0.3.3)
92
- mimemagic (~> 0.3.2)
93
- method_source (0.9.2)
94
- mimemagic (0.3.3)
95
- mini_mime (1.0.1)
96
- mini_portile2 (2.4.0)
97
- minitest (5.11.3)
98
- multipart-post (2.0.0)
99
- netrc (0.11.0)
100
- nio4r (2.3.1)
101
- nio4r (2.3.1-java)
102
- nokogiri (1.10.2)
103
- mini_portile2 (~> 2.4.0)
104
- nokogiri (1.10.2-java)
105
- octokit (4.13.0)
106
- sawyer (~> 0.8.0, >= 0.5.3)
107
- parallel (1.17.0)
108
- parser (2.6.2.1)
109
- ast (~> 2.4.0)
110
- pry (0.12.2)
111
- coderay (~> 1.1.0)
112
- method_source (~> 0.9.0)
113
- pry (0.12.2-java)
114
- coderay (~> 1.1.0)
115
- method_source (~> 0.9.0)
116
- spoon (~> 0.0)
117
- psych (3.1.0)
118
- psych (3.1.0-java)
119
- jar-dependencies (>= 0.1.7)
120
- public_suffix (3.0.3)
121
- rack (2.0.6)
122
- rack-test (1.1.0)
123
- rack (>= 1.0, < 3)
124
- rails (5.2.3)
125
- actioncable (= 5.2.3)
126
- actionmailer (= 5.2.3)
127
- actionpack (= 5.2.3)
128
- actionview (= 5.2.3)
129
- activejob (= 5.2.3)
130
- activemodel (= 5.2.3)
131
- activerecord (= 5.2.3)
132
- activestorage (= 5.2.3)
133
- activesupport (= 5.2.3)
134
- bundler (>= 1.3.0)
135
- railties (= 5.2.3)
136
- sprockets-rails (>= 2.0.0)
137
- rails-dom-testing (2.0.3)
138
- activesupport (>= 4.2.0)
139
- nokogiri (>= 1.6)
140
- rails-html-sanitizer (1.0.4)
141
- loofah (~> 2.2, >= 2.2.2)
142
- railties (5.2.3)
143
- actionpack (= 5.2.3)
144
- activesupport (= 5.2.3)
145
- method_source
146
- rake (>= 0.8.7)
147
- thor (>= 0.19.0, < 2.0)
148
- rainbow (3.0.0)
149
- rake (12.3.2)
150
- regexp_parser (1.3.0)
151
- rspec (3.8.0)
152
- rspec-core (~> 3.8.0)
153
- rspec-expectations (~> 3.8.0)
154
- rspec-mocks (~> 3.8.0)
155
- rspec-core (3.8.0)
156
- rspec-support (~> 3.8.0)
157
- rspec-expectations (3.8.2)
158
- diff-lcs (>= 1.2.0, < 2.0)
159
- rspec-support (~> 3.8.0)
160
- rspec-mocks (3.8.0)
161
- diff-lcs (>= 1.2.0, < 2.0)
162
- rspec-support (~> 3.8.0)
163
- rspec-rails (3.8.2)
164
- actionpack (>= 3.0)
165
- activesupport (>= 3.0)
166
- railties (>= 3.0)
167
- rspec-core (~> 3.8.0)
168
- rspec-expectations (~> 3.8.0)
169
- rspec-mocks (~> 3.8.0)
170
- rspec-support (~> 3.8.0)
171
- rspec-support (3.8.0)
172
- rubocop (0.67.2)
173
- jaro_winkler (~> 1.5.1)
174
- parallel (~> 1.10)
175
- parser (>= 2.5, != 2.5.1.1)
176
- psych (>= 3.1.0)
177
- rainbow (>= 2.2.2, < 4.0)
178
- ruby-progressbar (~> 1.7)
179
- unicode-display_width (>= 1.4.0, < 1.6)
180
- ruby-progressbar (1.10.0)
181
- sawyer (0.8.1)
182
- addressable (>= 2.3.5, < 2.6)
183
- faraday (~> 0.8, < 1.0)
184
- spoon (0.0.6)
185
- ffi
186
- sprockets (3.7.2)
187
- concurrent-ruby (~> 1.0)
188
- rack (> 1, < 3)
189
- sprockets-rails (3.2.1)
190
- actionpack (>= 4.0)
191
- activesupport (>= 4.0)
192
- sprockets (>= 3.0.0)
193
- thor (0.20.3)
194
- thread_safe (0.3.6)
195
- thread_safe (0.3.6-java)
196
- tzinfo (1.2.5)
197
- thread_safe (~> 0.1)
198
- unicode-display_width (1.5.0)
199
- websocket-driver (0.7.0)
200
- websocket-extensions (>= 0.1.0)
201
- websocket-driver (0.7.0-java)
202
- websocket-extensions (>= 0.1.0)
203
- websocket-extensions (0.1.3)
204
- xpath (3.2.0)
205
- nokogiri (~> 1.8)
206
-
207
- PLATFORMS
208
- java
209
- ruby
210
-
211
- DEPENDENCIES
212
- arbre!
213
- capybara
214
- chandler
215
- combustion
216
- pry
217
- rails (>= 5.0.0.1)
218
- rake
219
- rspec
220
- rspec-rails
221
- rubocop
222
-
223
- BUNDLED WITH
224
- 2.0.1