Sidenav 0.0.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.
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: []