Loading lib/jsduck/js/rkelly_adapter.rb +51 −8 Original line number Diff line number Diff line Loading @@ -117,7 +117,11 @@ module JsDuck when RKelly::Nodes::FunctionExprNode == node.class make(node, { "type" => "FunctionExpression", "id" => node.value == "function" ? nil : {"type" => "Identifier", "name" => node.value}, "id" => node.value == "function" ? nil : { "type" => "Identifier", "name" => node.value, "range" => offset_range(node, :value, "function "), }, "params" => node.arguments.map {|a| adapt_node(a) }, "body" => adapt_node(node.function_body), }) Loading @@ -130,7 +134,11 @@ module JsDuck "type" => "MemberExpression", "computed" => false, "object" => adapt_node(node.value), "property" => {"type" => "Identifier", "name" => node.accessor}, "property" => { "type" => "Identifier", "name" => node.accessor, "range" => offset_range(node, :accessor), }, }) when RKelly::Nodes::BracketAccessorNode == node.class make(node, { Loading Loading @@ -201,7 +209,11 @@ module JsDuck when RKelly::Nodes::PropertyNode == node.class make(node, { "type" => "Property", "key" => {"type" => "Identifier", "name" => node.name}, "key" => { "type" => "Identifier", "name" => node.name, "range" => offset_range(node, :name), }, "value" => adapt_node(node.value), "kind" => "init", }) Loading Loading @@ -267,12 +279,20 @@ module JsDuck when RKelly::Nodes::BreakNode == node.class make(node, { "type" => "BreakStatement", "label" => node.value ? {"type" => "Identifier", "name" => node.value} : nil, "label" => node.value ? { "type" => "Identifier", "name" => node.value, "range" => offset_range(node, :value, "break "), } : nil, }) when RKelly::Nodes::ContinueNode == node.class make(node, { "type" => "ContinueStatement", "label" => node.value ? {"type" => "Identifier", "name" => node.value} : nil, "label" => node.value ? { "type" => "Identifier", "name" => node.value, "range" => offset_range(node, :value), } : nil, }) when RKelly::Nodes::TryNode == node.class make(node, { Loading @@ -290,7 +310,11 @@ module JsDuck when RKelly::Nodes::LabelNode == node.class make(node, { "type" => "LabeledStatement", "label" => {"type" => "Identifier", "name" => node.name}, "label" => { "type" => "Identifier", "name" => node.name, "range" => offset_range(node, :name), }, "body" => adapt_node(node.value), }) when RKelly::Nodes::BlockNode == node.class Loading Loading @@ -330,13 +354,21 @@ module JsDuck when RKelly::Nodes::VarDeclNode == node.class make(node, { "type" => "VariableDeclarator", "id" => {"type" => "Identifier", "name" => node.name}, "id" => { "type" => "Identifier", "name" => node.name, "range" => offset_range(node, :name), }, "init" => adapt_node(node.value), }) when RKelly::Nodes::FunctionDeclNode == node.class make(node, { "type" => "FunctionDeclaration", "id" => {"type" => "Identifier", "name" => node.value}, "id" => { "type" => "Identifier", "name" => node.value, "range" => offset_range(node, :value, "function "), }, "params" => node.arguments.map {|a| adapt_node(a) }, "body" => adapt_node(node.function_body), }) Loading @@ -353,6 +385,17 @@ module JsDuck config end # Calculates "range" array from the start position of the node, # its field and given offset prefix (amount of characters to # discard from the beginning). def offset_range(node, field, prefix="") line = node.range.from.line i = node.range.from.index offset = prefix.length length = node.send(field).length return [i + offset, i + offset + length, line] end def flatten_sequence(node) if node.is_a?(RKelly::Nodes::CommaNode) [flatten_sequence(node.left), flatten_sequence(node.value)].flatten Loading Loading
lib/jsduck/js/rkelly_adapter.rb +51 −8 Original line number Diff line number Diff line Loading @@ -117,7 +117,11 @@ module JsDuck when RKelly::Nodes::FunctionExprNode == node.class make(node, { "type" => "FunctionExpression", "id" => node.value == "function" ? nil : {"type" => "Identifier", "name" => node.value}, "id" => node.value == "function" ? nil : { "type" => "Identifier", "name" => node.value, "range" => offset_range(node, :value, "function "), }, "params" => node.arguments.map {|a| adapt_node(a) }, "body" => adapt_node(node.function_body), }) Loading @@ -130,7 +134,11 @@ module JsDuck "type" => "MemberExpression", "computed" => false, "object" => adapt_node(node.value), "property" => {"type" => "Identifier", "name" => node.accessor}, "property" => { "type" => "Identifier", "name" => node.accessor, "range" => offset_range(node, :accessor), }, }) when RKelly::Nodes::BracketAccessorNode == node.class make(node, { Loading Loading @@ -201,7 +209,11 @@ module JsDuck when RKelly::Nodes::PropertyNode == node.class make(node, { "type" => "Property", "key" => {"type" => "Identifier", "name" => node.name}, "key" => { "type" => "Identifier", "name" => node.name, "range" => offset_range(node, :name), }, "value" => adapt_node(node.value), "kind" => "init", }) Loading Loading @@ -267,12 +279,20 @@ module JsDuck when RKelly::Nodes::BreakNode == node.class make(node, { "type" => "BreakStatement", "label" => node.value ? {"type" => "Identifier", "name" => node.value} : nil, "label" => node.value ? { "type" => "Identifier", "name" => node.value, "range" => offset_range(node, :value, "break "), } : nil, }) when RKelly::Nodes::ContinueNode == node.class make(node, { "type" => "ContinueStatement", "label" => node.value ? {"type" => "Identifier", "name" => node.value} : nil, "label" => node.value ? { "type" => "Identifier", "name" => node.value, "range" => offset_range(node, :value), } : nil, }) when RKelly::Nodes::TryNode == node.class make(node, { Loading @@ -290,7 +310,11 @@ module JsDuck when RKelly::Nodes::LabelNode == node.class make(node, { "type" => "LabeledStatement", "label" => {"type" => "Identifier", "name" => node.name}, "label" => { "type" => "Identifier", "name" => node.name, "range" => offset_range(node, :name), }, "body" => adapt_node(node.value), }) when RKelly::Nodes::BlockNode == node.class Loading Loading @@ -330,13 +354,21 @@ module JsDuck when RKelly::Nodes::VarDeclNode == node.class make(node, { "type" => "VariableDeclarator", "id" => {"type" => "Identifier", "name" => node.name}, "id" => { "type" => "Identifier", "name" => node.name, "range" => offset_range(node, :name), }, "init" => adapt_node(node.value), }) when RKelly::Nodes::FunctionDeclNode == node.class make(node, { "type" => "FunctionDeclaration", "id" => {"type" => "Identifier", "name" => node.value}, "id" => { "type" => "Identifier", "name" => node.value, "range" => offset_range(node, :value, "function "), }, "params" => node.arguments.map {|a| adapt_node(a) }, "body" => adapt_node(node.function_body), }) Loading @@ -353,6 +385,17 @@ module JsDuck config end # Calculates "range" array from the start position of the node, # its field and given offset prefix (amount of characters to # discard from the beginning). def offset_range(node, field, prefix="") line = node.range.from.line i = node.range.from.index offset = prefix.length length = node.send(field).length return [i + offset, i + offset + length, line] end def flatten_sequence(node) if node.is_a?(RKelly::Nodes::CommaNode) [flatten_sequence(node.left), flatten_sequence(node.value)].flatten Loading