Sidenav 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. checksums.yaml +7 -0
  2. data/src/Menu.rb +71 -0
  3. data/src/Sidenav.rb +113 -0
  4. metadata +45 -0
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: e5eb12191e0ac304d72163d241281beaa6122eac
4
+ data.tar.gz: 941fc267f8d99fd4b5535f703a0bb9f3c5c5ff6b
5
+ SHA512:
6
+ metadata.gz: b691fec5709e5963ca7cca89a569be3c5950df8d5c68aa7743e86101d836b9a7b7bffbe3a3cfe6348e54c246fd3ee81b0e7601509b4f49daf22a991dffb801d7
7
+ data.tar.gz: 406ecfac937b447f5112247d2e13b8fdcc4a7f1854adfc1125e82be1f5b35b025dc97a20953da225fbfe21e5de5a30de0c244903f986809804af0da84c183f34
@@ -0,0 +1,71 @@
1
+ class Menu
2
+
3
+ ## setter and getter options
4
+ attr_accessor :name , :link , :title , :icon
5
+
6
+ ##
7
+ # set link option of item
8
+ #
9
+ # @author Alireza Josheghani <a.josheghani@anetwork.ir>
10
+ # @since 24 Nov 2016
11
+ # @param [string] link
12
+ # @return [string]
13
+ def link(link)
14
+ @link = link
15
+ end
16
+
17
+ ##
18
+ # set title option of item
19
+ #
20
+ # @author Alireza Josheghani <a.josheghani@anetwork.ir>
21
+ # @since 24 Nov 2016
22
+ # @param [string] title
23
+ # @return [Object]
24
+ def title(title)
25
+ @title = title
26
+ end
27
+
28
+ ##
29
+ # set icon option of item
30
+ #
31
+ # @author Alireza Josheghani <a.josheghani@anetwork.ir>
32
+ # @since 24 Nov 2016
33
+ # @param [string] icon
34
+ # @return [Object]
35
+ def icon(icon)
36
+ @icon = icon
37
+ end
38
+
39
+ ##
40
+ # set route name
41
+ #
42
+ # @author Alireza Josheghani <a.josheghani@anetwork.ir>
43
+ # @since 24 Nov 2016
44
+ # @param [string] name
45
+ # @return [Object]
46
+ def set_item_name(name)
47
+ @route = name
48
+ end
49
+
50
+ ##
51
+ # make array of items
52
+ #
53
+ # @author Alireza Josheghani <a.josheghani@anetwork.ir>
54
+ # @since 24 Nov 2016
55
+ # @return [Object]
56
+ def make(item)
57
+
58
+ # set route name
59
+ self.set_item_name(item)
60
+
61
+ # return render object
62
+ {
63
+ route: @route,
64
+ title: @title,
65
+ link: @link ,
66
+ icon: @icon
67
+ }
68
+
69
+ end
70
+
71
+ end
@@ -0,0 +1,113 @@
1
+ class Sidenav
2
+
3
+ # setter and getter results
4
+ attr_accessor :group , :currentRoute , :menu , :routes
5
+
6
+ ##
7
+ # Sidenav initialize
8
+ #
9
+ # @author Alireza Josheghani <a.josheghani@anetwork.ir>
10
+ # @since 24 Nov 2016
11
+ # @return [object]
12
+ def initialize
13
+ @menu = Hash.new
14
+ @routes = Array.new
15
+ end
16
+
17
+ ##
18
+ # Register a group items
19
+ #
20
+ # @author Alireza Josheghani <a.josheghani@anetwork.ir>
21
+ # @since 24 Nov 2016
22
+ # @param [string] name
23
+ # @param [lambda] callback
24
+ def group(name,callback)
25
+ # set group menu name
26
+ @group = name
27
+
28
+ # set group menu
29
+ @menu[name] = []
30
+
31
+ # run callback lambda
32
+ callback.call
33
+ end
34
+
35
+ ##
36
+ # Register a new item
37
+ #
38
+ # @author Alireza Josheghani <a.josheghani@anetwork.ir>
39
+ # @since 24 Nov 2016
40
+ # @param [string] name
41
+ # @param [lambda] callback
42
+ # @return [Object]
43
+ def register(name,callback)
44
+
45
+ @current_route = name
46
+
47
+ @routes.push(name)
48
+
49
+ item = self.add(name,callback)
50
+
51
+ if self.check_group_name(@group)
52
+ @menu[@group].push(item)
53
+ else
54
+ @menu.push(item)
55
+ end
56
+ end
57
+
58
+ ##
59
+ # Add item
60
+ #
61
+ # @author Alireza Josheghani <a.josheghani@anetwork.ir>
62
+ # @since 24 Nov 2016
63
+ # @param [string] item
64
+ # @param [lambda] callback
65
+ # @return [Object]
66
+ def add(item,callback)
67
+ menu_object = Menu.new
68
+
69
+ callback.call(menu_object)
70
+
71
+ menu_object.make(item)
72
+ end
73
+
74
+ ##
75
+ # Check group name was set
76
+ #
77
+ # @author Alireza Josheghani <a.josheghani@anetwork.ir>
78
+ # @since 24 Nov 2016
79
+ # @param [string] group
80
+ # @return [bool]
81
+ def check_group_name(group)
82
+ if group != nil
83
+ true
84
+ else
85
+ false;
86
+ end
87
+ end
88
+
89
+ ##
90
+ # get registered routes
91
+ #
92
+ # @author Alireza Josheghani <a.josheghani@anetwork.ir>
93
+ # @since 24 Nov 2016
94
+ # @return [Object]
95
+ def routes
96
+ puts @routes
97
+ end
98
+
99
+ ##
100
+ # get render of menu array
101
+ #
102
+ # @author Alireza Josheghani <a.josheghani@anetwork.ir>
103
+ # @since 24 Nov 2016
104
+ # @param [Object] group
105
+ def render(group = nil)
106
+ if group != nil
107
+ puts @menu[group]
108
+ else
109
+ puts @menu
110
+ end
111
+ end
112
+
113
+ end
metadata ADDED
@@ -0,0 +1,45 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: Sidenav
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Alireza Josheghani
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-11-25 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: SideNav is a Ruby package which helps you generate powerful sidebar navigation.
14
+ email: josheghani.dev@gmail.com
15
+ executables: []
16
+ extensions: []
17
+ extra_rdoc_files: []
18
+ files:
19
+ - src/Menu.rb
20
+ - src/Sidenav.rb
21
+ homepage: https://github.com/iamalirezaj/Sidenav-ruby
22
+ licenses:
23
+ - MIT
24
+ metadata: {}
25
+ post_install_message:
26
+ rdoc_options: []
27
+ require_paths:
28
+ - lib
29
+ required_ruby_version: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.9'
34
+ required_rubygems_version: !ruby/object:Gem::Requirement
35
+ requirements:
36
+ - - ">="
37
+ - !ruby/object:Gem::Version
38
+ version: '0'
39
+ requirements: []
40
+ rubyforge_project:
41
+ rubygems_version: 2.6.3
42
+ signing_key:
43
+ specification_version: 4
44
+ summary: Sidebar navigation management
45
+ test_files: []