activeadmin-menu_tree 0.0.1 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a653a9f1c51e633dff273004db51decc6fb83ae1fc65c1fe80115710704cc13e
4
- data.tar.gz: e1ffa9b248cdd6c63920877695d49b51cc94d4cc4cf89de4cd7919a94a9413ad
3
+ metadata.gz: c09eb5f2943471291e5f48ea280f82c0b3007057a6717db372447a6b8dc9ab01
4
+ data.tar.gz: a169f0d879cb014bab3974e45a86ad8e23ac129e8752a1a22b968f6a3b0a048e
5
5
  SHA512:
6
- metadata.gz: 3b0c9d1405c3b35a27255cfdeedf18ccece589991c7fa8f91c28b518a7cabac180cb940406112c1d065055a5281ac894389a41a4ae65320f6836a1af47be0f7d
7
- data.tar.gz: 569b99a28bf7cfc8277915138e0ff5f3d579f95b07ed791867f44651b225c2edb47259610f09a61635592ad60a1f7486004c94272decf34008b3b3520a13ac0a
6
+ metadata.gz: 28860c7fbd65dc2530a41a037145d59dbaf6c9cec497a40b696dad4349dac833d0dfc24803ecb1e0832c3273b33d1ca18c2c98ba1c2be6f178c1f53189dc75a2
7
+ data.tar.gz: 63e48fef67ff9bd247c6e44e479cb32dff83038f9221953c91f764b94d6cd0a3d446b7e45ba42b419068c3683b531f9bea19a11964ced1b3e4c0849e6f4e6e05
@@ -1,47 +1,61 @@
1
1
  name: Ruby
2
2
 
3
- on: [push, pull_request]
3
+ on:
4
+ push:
5
+ branches:
6
+ - main
7
+ pull_request:
8
+ types:
9
+ - opened
10
+ - synchronize
11
+ - reopened
4
12
 
5
13
  jobs:
6
14
  rubocop:
7
15
  runs-on: ubuntu-latest
8
16
  steps:
9
- - uses: actions/checkout@v2
10
- - name: Set up Ruby
11
- uses: ruby/setup-ruby@v1
12
- with:
13
- ruby-version: 3.0.0
14
- - name: Install bundler
15
- run: gem install bundler
16
- - name: Setup
17
- run: bin/setup
18
- - name: Rubocop
19
- run: bundle exec rake rubocop
17
+ - uses: actions/checkout@v2
18
+ - name: Set up Ruby
19
+ uses: ruby/setup-ruby@v1
20
+ with:
21
+ ruby-version: 3.1
22
+ - name: Install bundler
23
+ run: gem install bundler
24
+ - name: Setup
25
+ run: bin/setup
26
+ - name: Rubocop
27
+ run: bundle exec rake rubocop
28
+ # steep:
29
+ # runs-on: ubuntu-latest
30
+ # steps:
31
+ # - uses: actions/checkout@v2
32
+ # - name: Set up Ruby
33
+ # uses: ruby/setup-ruby@v1
34
+ # with:
35
+ # ruby-version: 3.1
36
+ # - name: Install bundler
37
+ # run: gem install bundler
38
+ # - name: Setup
39
+ # run: bin/setup
40
+ # - name: Steep
41
+ # run: bundle exec steep check
20
42
  rspec:
21
43
  runs-on: ubuntu-latest
44
+ strategy:
45
+ matrix:
46
+ ruby:
47
+ - 2.7
48
+ - 3.0
49
+ - 3.1
22
50
  steps:
23
- - uses: actions/checkout@v2
24
- - name: Set up Ruby
25
- uses: ruby/setup-ruby@v1
26
- with:
27
- ruby-version: 3.0.0
28
- - name: Install bundler
29
- run: gem install bundler
30
- - name: Setup
31
- run: bin/setup
32
- - name: RSpec
33
- run: bundle exec rake spec
34
- steep:
35
- runs-on: ubuntu-latest
36
- steps:
37
- - uses: actions/checkout@v2
38
- - name: Set up Ruby
39
- uses: ruby/setup-ruby@v1
40
- with:
41
- ruby-version: 3.0.0
42
- - name: Install bundler
43
- run: gem install bundler
44
- - name: Setup
45
- run: bin/setup
46
- - name: Steep
47
- run: bundle exec steep check
51
+ - uses: actions/checkout@v2
52
+ - name: Set up Ruby
53
+ uses: ruby/setup-ruby@v1
54
+ with:
55
+ ruby-version: ${{ matrix.ruby }}
56
+ - name: Install bundler
57
+ run: gem install bundler
58
+ - name: Setup
59
+ run: bin/setup
60
+ - name: RSpec
61
+ run: bundle exec rake spec
data/.rubocop.yml CHANGED
@@ -1,3 +1,8 @@
1
+ require:
2
+ - rubocop-rake
3
+ - rubocop-rspec
4
+ - rubocop-rubycw
5
+
1
6
  AllCops:
2
7
  TargetRubyVersion: 2.7
3
8
  NewCops: enable
@@ -6,6 +11,7 @@ AllCops:
6
11
  ExtraDetails: true
7
12
  Exclude:
8
13
  - 'spec/dummy/**/*'
14
+ - 'vendor/bundle/**/*'
9
15
 
10
16
  Style/ClassAndModuleChildren:
11
17
  Enabled: false
@@ -26,6 +32,8 @@ Style/TrailingCommaInHashLiteral:
26
32
 
27
33
  Layout/LineLength:
28
34
  Max: 120
35
+ Exclude:
36
+ - '*.gemspec'
29
37
 
30
38
  Layout/SpaceBeforeBlockBraces:
31
39
  Enabled: false
@@ -36,3 +44,13 @@ Metrics/BlockLength:
36
44
 
37
45
  Metrics/MethodLength:
38
46
  Max: 15
47
+
48
+ RSpec:
49
+ # DisabledByDefault
50
+ Enabled: false
51
+
52
+ RSpec/ContextWording:
53
+ Enabled: true
54
+
55
+ RSpec/VerifiedDoubles:
56
+ Enabled: true
data/Gemfile CHANGED
@@ -8,5 +8,8 @@ gemspec
8
8
  gem "rake", "~> 13.0"
9
9
  gem "rbs"
10
10
  gem "rspec", "~> 3.0"
11
- gem "rubocop", "~> 0.80"
12
- gem "steep"
11
+ gem "rubocop", "~> 1.0", require: false
12
+ gem "rubocop-rake", require: false
13
+ gem "rubocop-rspec", require: false
14
+ gem "rubocop-rubycw", require: false
15
+ gem "steep", ">= 0.47.0"
data/Makefile CHANGED
@@ -1,7 +1,7 @@
1
1
  .PHONY: rake/* rbs/* typeprof/* steep/*
2
2
 
3
3
  rake/tasks:
4
- rake --tasks
4
+ bundle exec rake --tasks
5
5
 
6
6
  rbs/prototype: rbs/prototype/lib
7
7
 
data/README.md CHANGED
@@ -1,6 +1,7 @@
1
1
  # ActiveAdmin::MenuTree
2
2
 
3
- <!-- TODO: badge -->
3
+ [![Gem Version](https://badge.fury.io/rb/activeadmin-menu_tree.svg)](https://badge.fury.io/rb/activeadmin-menu_tree)
4
+ [![Ruby](https://github.com/shuuuuun/activeadmin-menu_tree/actions/workflows/main.yml/badge.svg)](https://github.com/shuuuuun/activeadmin-menu_tree/actions/workflows/main.yml)
4
5
 
5
6
  Allows [ActiveAdmin](https://github.com/activeadmin/activeadmin) menus to be managed in tree format.
6
7
 
@@ -85,19 +86,22 @@ end
85
86
 
86
87
  ### Other ways to load configuration
87
88
 
88
- It is also possible to simply use hash instead of yaml.
89
+ It is also possible to simply use hash instead of yaml.
90
+ If you want to use dynamic specification using `proc` in menu_tree (instead of in ActiveAdmin Resource), you may want to use this one.
91
+
89
92
  ```ruby
90
93
  ActiveAdmin::MenuTree.setup do |config|
91
- config.menu_tree = [{
92
- name: "Dashboard"
93
- }, {
94
- label: "Foo",
95
- children: [{
96
- name: "Bar"
97
- }, {
98
- name: "Baz"
99
- }]
100
- }]
94
+ config.menu_tree = [
95
+ { name: "Dashboard", label: proc { I18n.t("active_admin.dashboard") } },
96
+ {
97
+ label: "Foo",
98
+ if: proc { "Something dynamic" },
99
+ children: [
100
+ { name: "Bar" },
101
+ { name: "Baz" }
102
+ ]
103
+ }
104
+ ]
101
105
  end
102
106
  ```
103
107
 
@@ -117,6 +121,7 @@ activeadmin:
117
121
  Or you can use other configuration gems like [global gem](https://github.com/railsware/global) by converting them to hash as well.
118
122
 
119
123
  ### Full configuration example
124
+
120
125
  ```yaml
121
126
  activeadmin:
122
127
  menu_tree:
@@ -145,6 +150,19 @@ activeadmin:
145
150
  url: 'https://example.com'
146
151
  html_options:
147
152
  target: blank
153
+ # Nesting of children is also available.
154
+ - label: Lorem
155
+ children:
156
+ - label: ipsum
157
+ children:
158
+ - label: dolor
159
+ children:
160
+ - label: sit
161
+ children:
162
+ - label: amet
163
+ url: 'https://wikipedia.org/wiki/Lorem_ipsum'
164
+ html_options:
165
+ target: blank
148
166
  ```
149
167
 
150
168
  ## Development
@@ -17,6 +17,7 @@ Gem::Specification.new do |spec|
17
17
  spec.metadata["homepage_uri"] = spec.homepage
18
18
  spec.metadata["source_code_uri"] = "https://github.com/shuuuuun/activeadmin-menu_tree"
19
19
  # spec.metadata["changelog_uri"] = "TODO: Put your gem's CHANGELOG.md URL here."
20
+ spec.metadata["rubygems_mfa_required"] = "true"
20
21
 
21
22
  # Specify which files should be added to the gem when it is released.
22
23
  # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ActiveAdmin::MenuTree
4
+ # ActiveAdmin::MenuTree::Config class
4
5
  class Config
5
6
  attr_reader :menu_tree, :menu_options
6
7
 
@@ -13,7 +14,7 @@ module ActiveAdmin::MenuTree
13
14
  raise ActiveAdmin::MenuTree::Error, "Invalid config" unless new_value.is_a? Array
14
15
 
15
16
  @menu_tree = new_value.map(&:deep_symbolize_keys)
16
- @menu_options = flatten_menu_tree
17
+ @menu_options = flatten_options(@menu_tree)
17
18
  end
18
19
 
19
20
  def find_menu_option(name:)
@@ -22,24 +23,22 @@ module ActiveAdmin::MenuTree
22
23
 
23
24
  private
24
25
 
25
- def flatten_menu_tree
26
- menu_tree.map.with_index(1) do |item, index|
27
- options = format_options(item, index: index)
26
+ def flatten_options(items, parent: nil)
27
+ items.map.with_index(1) do |item, index|
28
+ options = format_options(item, index: index, parent: parent)
28
29
  next options unless item[:children].is_a? Array
29
30
 
30
- children =
31
- item[:children].map.with_index(1) do |child, child_index|
32
- format_options(child, index: child_index, parent: item[:label])
33
- end
34
-
31
+ next_parent = parent ? [parent, item[:label]].flatten.compact : item[:label]
32
+ children = flatten_options(item[:children], parent: next_parent)
35
33
  [options] + children
36
34
  end.flatten.compact
37
35
  end
38
36
 
39
37
  def format_options(item, index:, parent: nil)
38
+ # TODO: validate option
40
39
  options = item.except(:children)
41
40
  options[:priority] = index * 10
42
- options[:label] ||= item[:name]&.pluralize&.titleize || ""
41
+ options[:id] ||= item[:name]
43
42
  options[:parent] = parent if parent.present?
44
43
  options
45
44
  end
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ActiveAdmin::MenuTree
4
+ # ActiveAdmin::MenuTree::DSL class
4
5
  module DSL
5
6
  def menu_tree(**args)
6
7
  options = menu_tree_config.find_menu_option(name: config.resource_name.name) || {}
@@ -2,6 +2,6 @@
2
2
 
3
3
  module ActiveAdmin
4
4
  module MenuTree
5
- VERSION = "0.0.1"
5
+ VERSION = "0.1.3"
6
6
  end
7
7
  end
@@ -8,6 +8,7 @@ require_relative "menu_tree/config"
8
8
  require_relative "menu_tree/dsl"
9
9
 
10
10
  module ActiveAdmin
11
+ # ActiveAdmin::MenuTree class
11
12
  module MenuTree
12
13
  class Error < StandardError; end
13
14
 
@@ -11,7 +11,7 @@ gems:
11
11
  source:
12
12
  type: git
13
13
  name: ruby/gem_rbs_collection
14
- revision: 2f3c0db60f184a09b3b195ad729a9aa1e2945d1b
14
+ revision: 81ace2c598ec871572beee5792e2a2781b35e762
15
15
  remote: https://github.com/ruby/gem_rbs_collection.git
16
16
  repo_dir: gems
17
17
  - name: actionview
@@ -19,7 +19,7 @@ gems:
19
19
  source:
20
20
  type: git
21
21
  name: ruby/gem_rbs_collection
22
- revision: 2f3c0db60f184a09b3b195ad729a9aa1e2945d1b
22
+ revision: 81ace2c598ec871572beee5792e2a2781b35e762
23
23
  remote: https://github.com/ruby/gem_rbs_collection.git
24
24
  repo_dir: gems
25
25
  - name: activemodel
@@ -27,7 +27,7 @@ gems:
27
27
  source:
28
28
  type: git
29
29
  name: ruby/gem_rbs_collection
30
- revision: 2f3c0db60f184a09b3b195ad729a9aa1e2945d1b
30
+ revision: 81ace2c598ec871572beee5792e2a2781b35e762
31
31
  remote: https://github.com/ruby/gem_rbs_collection.git
32
32
  repo_dir: gems
33
33
  - name: activerecord
@@ -35,7 +35,7 @@ gems:
35
35
  source:
36
36
  type: git
37
37
  name: ruby/gem_rbs_collection
38
- revision: 2f3c0db60f184a09b3b195ad729a9aa1e2945d1b
38
+ revision: 81ace2c598ec871572beee5792e2a2781b35e762
39
39
  remote: https://github.com/ruby/gem_rbs_collection.git
40
40
  repo_dir: gems
41
41
  - name: activesupport
@@ -43,7 +43,7 @@ gems:
43
43
  source:
44
44
  type: git
45
45
  name: ruby/gem_rbs_collection
46
- revision: 2f3c0db60f184a09b3b195ad729a9aa1e2945d1b
46
+ revision: 81ace2c598ec871572beee5792e2a2781b35e762
47
47
  remote: https://github.com/ruby/gem_rbs_collection.git
48
48
  repo_dir: gems
49
49
  - name: ast
@@ -51,7 +51,15 @@ gems:
51
51
  source:
52
52
  type: git
53
53
  name: ruby/gem_rbs_collection
54
- revision: 2f3c0db60f184a09b3b195ad729a9aa1e2945d1b
54
+ revision: 81ace2c598ec871572beee5792e2a2781b35e762
55
+ remote: https://github.com/ruby/gem_rbs_collection.git
56
+ repo_dir: gems
57
+ - name: listen
58
+ version: '3.2'
59
+ source:
60
+ type: git
61
+ name: ruby/gem_rbs_collection
62
+ revision: 81ace2c598ec871572beee5792e2a2781b35e762
55
63
  remote: https://github.com/ruby/gem_rbs_collection.git
56
64
  repo_dir: gems
57
65
  - name: nokogiri
@@ -59,7 +67,7 @@ gems:
59
67
  source:
60
68
  type: git
61
69
  name: ruby/gem_rbs_collection
62
- revision: 2f3c0db60f184a09b3b195ad729a9aa1e2945d1b
70
+ revision: 81ace2c598ec871572beee5792e2a2781b35e762
63
71
  remote: https://github.com/ruby/gem_rbs_collection.git
64
72
  repo_dir: gems
65
73
  - name: parallel
@@ -67,7 +75,7 @@ gems:
67
75
  source:
68
76
  type: git
69
77
  name: ruby/gem_rbs_collection
70
- revision: 2f3c0db60f184a09b3b195ad729a9aa1e2945d1b
78
+ revision: 81ace2c598ec871572beee5792e2a2781b35e762
71
79
  remote: https://github.com/ruby/gem_rbs_collection.git
72
80
  repo_dir: gems
73
81
  - name: rack
@@ -75,7 +83,7 @@ gems:
75
83
  source:
76
84
  type: git
77
85
  name: ruby/gem_rbs_collection
78
- revision: 2f3c0db60f184a09b3b195ad729a9aa1e2945d1b
86
+ revision: 81ace2c598ec871572beee5792e2a2781b35e762
79
87
  remote: https://github.com/ruby/gem_rbs_collection.git
80
88
  repo_dir: gems
81
89
  - name: railties
@@ -83,7 +91,7 @@ gems:
83
91
  source:
84
92
  type: git
85
93
  name: ruby/gem_rbs_collection
86
- revision: 2f3c0db60f184a09b3b195ad729a9aa1e2945d1b
94
+ revision: 81ace2c598ec871572beee5792e2a2781b35e762
87
95
  remote: https://github.com/ruby/gem_rbs_collection.git
88
96
  repo_dir: gems
89
97
  - name: rainbow
@@ -91,6 +99,6 @@ gems:
91
99
  source:
92
100
  type: git
93
101
  name: ruby/gem_rbs_collection
94
- revision: 2f3c0db60f184a09b3b195ad729a9aa1e2945d1b
102
+ revision: 81ace2c598ec871572beee5792e2a2781b35e762
95
103
  remote: https://github.com/ruby/gem_rbs_collection.git
96
104
  repo_dir: gems
@@ -1,18 +1,22 @@
1
1
  module ActiveAdmin::MenuTree
2
2
  class Config
3
- attr_reader menu_tree: Array[untyped]
4
- attr_reader menu_options: Array[untyped]
3
+ type menu_tree_item = Hash[Symbol, untyped]
4
+ type menu_option = Hash[Symbol, untyped]
5
+
6
+ attr_reader menu_tree: Array[menu_tree_item]
7
+ attr_reader menu_options: Array[menu_option]
5
8
 
6
9
  def initialize: () -> void
7
10
 
8
- def menu_tree=: (untyped new_value) -> untyped
11
+ # def menu_tree=: (Array[Hash[untyped, untyped]] new_value) -> void
12
+ def menu_tree=: (Array[untyped] new_value) -> void
9
13
 
10
- def find_menu_option: (name: String) -> untyped
14
+ def find_menu_option: (name: String) -> (menu_option | nil)
11
15
 
12
16
  private
13
17
 
14
- def flatten_menu_tree: () -> untyped
18
+ def flatten_menu_tree: () -> Array[menu_option]
15
19
 
16
- def format_options: (untyped item, index: untyped index, ?parent: untyped? parent) -> untyped
20
+ def format_options: (Hash[Symbol, untyped] item, index: Integer index, ?parent: String? parent) -> menu_option
17
21
  end
18
22
  end
@@ -3,12 +3,12 @@ module ActiveAdmin
3
3
  class Error < StandardError
4
4
  end
5
5
 
6
- def self.setup: () { (untyped) -> untyped } -> untyped
6
+ def self.setup: () { (Config) -> void } -> void
7
7
 
8
8
  def self.config: () -> Config
9
9
 
10
10
  private
11
11
 
12
- def self.setup_menu_options: (untyped aa_config) -> untyped
12
+ def self.setup_menu_options: (ActiveAdmin::Application) -> void
13
13
  end
14
14
  end
@@ -1,3 +1,8 @@
1
1
  module ActiveAdmin
2
- def self.before_load: () { (untyped) -> void } -> void
2
+ def self.before_load: () { (ActiveAdmin::Application) -> void } -> void
3
+
4
+ class Application
5
+ def comments_menu=: (Hash[Symbol, untyped] | nil) -> void
6
+ def namespace: (Symbol) { (untyped) -> void } -> void
7
+ end
3
8
  end
@@ -0,0 +1,4 @@
1
+ # Tentative deal, it doesn't seem to be loaded from gem_rbs_collection for some reason.
2
+ class Object
3
+ def present?: () -> bool
4
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: activeadmin-menu_tree
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - shuuuuuny
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-09-27 00:00:00.000000000 Z
11
+ date: 2022-02-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activeadmin
@@ -70,12 +70,14 @@ files:
70
70
  - sig/lib/activeadmin/menu_tree/config.rbs
71
71
  - sig/lib/activeadmin/menu_tree/dsl.rbs
72
72
  - sig/lib/activeadmin/menu_tree/version.rbs
73
+ - sig/lib/activesupport.rbs
73
74
  homepage: https://github.com/shuuuuun/activeadmin-menu_tree
74
75
  licenses:
75
76
  - MIT
76
77
  metadata:
77
78
  homepage_uri: https://github.com/shuuuuun/activeadmin-menu_tree
78
79
  source_code_uri: https://github.com/shuuuuun/activeadmin-menu_tree
80
+ rubygems_mfa_required: 'true'
79
81
  post_install_message:
80
82
  rdoc_options: []
81
83
  require_paths:
@@ -91,7 +93,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
91
93
  - !ruby/object:Gem::Version
92
94
  version: '0'
93
95
  requirements: []
94
- rubygems_version: 3.2.28
96
+ rubygems_version: 3.3.3
95
97
  signing_key:
96
98
  specification_version: 4
97
99
  summary: Allows ActiveAdmin menus to be managed in tree format.