codus 0.0.1.6 → 0.0.1.6.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -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