the Object preprocessor.
$ npm install object-parser-cli --global
$ opc -V
# 0.0.0-alpha.0
$ opc
# Usage: opc <file/url> [path/locator...] [options...]
#
# Options:
#
# -h, --help output usage information
# -S, --stdin use the stdin
# -V, --version output the version number
# -t, --transform <type> Transform to <json/json5/yaml/html>
# -i, --indent <digit> Adjust indents <2>
Convert other format the passed value. (alias -t
)
Support the <type>
: json
, json5
, yaml
, html
JSON / JSON5 / JsonML
# foo.json: [["body",["h1",{"foo":"bar"},"baz"]]]
$ opc foo.json --transfrom json5
# [["body",["h1",{foo:"bar"},"baz"]]]
$ opc foo.json --transfrom yaml
# -
# - body
# - [h1, {foo: bar}, baz]
$ opc foo.json --transfrom html
# <body>
# <h1 foo="bar">baz</h1>
# </body>
# foo.yml: '-\n - body\n - [h1, {foo: bar}, baz]' >
$ opc foo.yml --transfrom json
# [["body",["h1",{"foo":"bar"},"baz"]]]
$ opc foo.yml --transfrom json5
# [["body",["h1",{foo:"bar"},"baz"]]]
$ opc foo.yml --transfrom html
# <body>
# <h1 foo="bar">baz</h1>
# </body>
# example.html: <title>foo</title>
$ opc example.html title # foo
# example.xml: <body id="baz"><h1>bar</h1></body>
$ opc example.xml body # bar
$ opc example.xml body?id # baz
# example.json: [["li",["a",{"href":"booooop"}],"beep"]]
$ opc example.json li # beep
$ opc example.json "li a"?href # booooop
locator
is selector?attribute
.
selector
is https://github.com/fb55/css-select#supported-selectors
Get text() if selector hasn't ?attribute
.
# bower.json: {"name":"bar","ignore":["baz","beep","boop"]}
$ opc bower name # bar
$ opc bower ignore # baz beep boop
$ opc bower name ignore # bar baz beep boop
# .travis.yml: language: node_js
$ opc .travis.yml language # node_js
Note: extension .json
is optional.
path
is https://lodash.com/docs#get
$ opc bower name ignore --separator " && " # bar && baz && beep && boop