codus 0.0.1.6 → 0.0.1.6.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.
@@ -0,0 +1,55 @@
1
+ yojs
2
+ =====
3
+
4
+ Javascript library for declaring and calling functions and variables using namespaces.
5
+
6
+ Usage
7
+ --------------------
8
+
9
+ Function definition:
10
+
11
+ ```javascript
12
+ yojs.define("yojs_test", function() {
13
+ //your code goes here
14
+ });
15
+
16
+ yojs.define("yojs_test.comments.new", function() {
17
+ //your code goes here
18
+ });
19
+ ```
20
+
21
+ Function call:
22
+
23
+ ```javascript
24
+ yojs.call("yojs_test");
25
+
26
+ yojs.call("yojs_test.comments.new");
27
+ ```
28
+
29
+ Store objects and values:
30
+
31
+ ```javascript
32
+ yojs.set("yojs_test.my_value", 42);
33
+ yojs.set("yojs_test.ns2.n3.my_json", { foo: "bar"} );
34
+ ```
35
+
36
+ Retrieve stored object and values:
37
+
38
+ ```javascript
39
+ var value = yojs.get("yojs_test.my_value");
40
+ var json = yojs.get("yojs_test.ns2.n3.my_json");
41
+ ```
42
+
43
+ Namespace lookup:
44
+
45
+ ```javascript
46
+ yojs.define("my.deep.namespace.teste", function() {
47
+ yojs.call("itworks");
48
+ });
49
+
50
+ yojs.define("my.deep.namespace.itworks", function() {
51
+ console.log("yay");
52
+ });
53
+
54
+ yojs.call("my.deep.namespace.teste") // -> yay
55
+ ```
@@ -0,0 +1,70 @@
1
+ // git@github.com:codus/yojs.git
2
+ // Version: 0.0.1
3
+
4
+ if(!Array.prototype.last) {
5
+ Array.prototype.last = function() {
6
+ return this[this.length - 1];
7
+ }
8
+ }
9
+
10
+ var yojs = (function(){
11
+ var nameFunctionHash = {};
12
+ var parentsNamespaces = [];
13
+
14
+ var getNameSpaceResult = function(namespace, arguments) {
15
+ if (typeof(nameFunctionHash[namespace]) == 'function') {
16
+ return nameFunctionHash[namespace].apply(this, arguments);
17
+ } else {
18
+ return nameFunctionHash[namespace];
19
+ }
20
+ }
21
+ return {
22
+ define: function(namespace, value) {
23
+ if (this.isDefined(namespace)) {
24
+ var errorMessage = "Error: trying to define namespace '" + namespace + "'' twice";
25
+ throw errorMessage;
26
+ } else {
27
+ nameFunctionHash[namespace] = value;
28
+ }
29
+ return;
30
+ },
31
+
32
+ set: function(namespace, value) {
33
+ nameFunctionHash[namespace] = value;
34
+ },
35
+
36
+ call: function(namespace){
37
+ var parentNamespaceArray = namespace.split(".");
38
+ var lastNameCalled = parentNamespaceArray.pop();
39
+ var currentParentNamespace = parentNamespaceArray.join(".");
40
+ var returnValue = null;
41
+ var lastParentNamespace = parentsNamespaces.last();
42
+ var functionWithLastParentClassNamespace = lastParentNamespace + "." + lastNameCalled;
43
+ var errorMessage = "";
44
+ var calledFunctionArguments = Array.prototype.slice.apply(arguments, [1]);
45
+
46
+ parentsNamespaces.push(currentParentNamespace);
47
+
48
+ if (this.isDefined(namespace)) {
49
+ returnValue = getNameSpaceResult(namespace, calledFunctionArguments);
50
+ } else if (this.isDefined(functionWithLastParentClassNamespace)) {
51
+ returnValue = getNameSpaceResult(functionWithLastParentClassNamespace, calledFunctionArguments);
52
+ } else {
53
+ var errorMessage = "Error: called namespace '" + namespace + "'. But it doesn't exist.";
54
+ throw errorMessage;
55
+ }
56
+
57
+ parentsNamespaces.pop();
58
+
59
+ return returnValue;
60
+ },
61
+
62
+ get: function(namespace) {
63
+ return this.call(namespace);
64
+ },
65
+
66
+ isDefined: function(namespace) {
67
+ return nameFunctionHash.hasOwnProperty(namespace);
68
+ }
69
+ }
70
+ }());
data/codus.gemspec CHANGED
@@ -15,7 +15,22 @@ Gem::Specification.new do |spec|
15
15
  spec.homepage = "https://github.com/codus/codus"
16
16
  spec.license = "MIT"
17
17
 
18
- spec.files = `git ls-files`.split("\n")
18
+ # normal spec stuff above
19
+ spec.files = `git ls-files`.split("\n")
20
+
21
+ # get an array of submodule dirs by executing 'pwd' inside each submodule
22
+ gem_dir = File.expand_path(File.dirname(__FILE__)) + "/"
23
+ `git submodule --quiet foreach pwd`.split($\).each do |submodule_path|
24
+ Dir.chdir(submodule_path) do
25
+ submodule_relative_path = submodule_path.sub gem_dir, ""
26
+ # issue git ls-files in submodule's directory and
27
+ # prepend the submodule path to create absolute file paths
28
+ `git ls-files`.split($\).each do |filename|
29
+ spec.files << "#{submodule_relative_path}/#{filename}"
30
+ end
31
+ end
32
+ end
33
+
19
34
  spec.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
20
35
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
21
36
  spec.require_paths = ["lib"]
data/lib/codus/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Codus
2
- VERSION = "0.0.1.6"
2
+ VERSION = "0.0.1.6.1"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: codus
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1.6
4
+ version: 0.0.1.6.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-07-29 00:00:00.000000000 Z
12
+ date: 2013-07-30 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -68,6 +68,8 @@ files:
68
68
  - spec/codus/view_helpers/yojs_helper_spec.rb
69
69
  - spec/codus/view_helpers_spec.rb
70
70
  - spec/spec_helper.rb
71
+ - app/assets/javascript/yojs/README.md
72
+ - app/assets/javascript/yojs/yojs.js
71
73
  homepage: https://github.com/codus/codus
72
74
  licenses:
73
75
  - MIT