Skip to main content

# Name

Project description

Name

jjcli - python module for command-line filter

Synopsis

as ascript:

jjcli skel     ## a initial filter skeleton
jjcli          ## manual

as a module:

from jjcli import *       ## re.* functions also imported
cl=clfilter(opt="do:", doc=__doc__) 
                          ## options in cl.opt  (...if "-d" in cl.opt:)
                          ##    autostrip         (def=True)
                          ##    inplace           (def=False) 
                          ##    fs (for csvrow()) (def=",")
                          ##    doc=__doc__     (for --help)
                          ##    longopts=["op1",...]

for line in cl.input():...    ## process one rstriped line at the time
for txt in cl.text():...      ## process one striped text at the time
    ## process txt            ##   (end of line spaces and \\r also removed)
for par in cl.paragraph():... ## process one striped paragraph at the time
for tup in cl.csvrow():...    ## process one csv row at the time
for tup in cl.tsvrow():...    ## process one tsv row at the time

cl.lineno()         ## line number
cl.filelineno()
cl.parno()          ## paragraph number
cl.fileparno()
cl.filename()       ## filename or "<stdin>"
cl.nextfile()
cl.isfirstline()
cl.args  cl.opt     ## command line arguments and options (after clfilter())

Description

jjcli is a opinioned Python module that tries to simplify the creation of unix filters. It is based on:

  • getopt (for command line options and args)
  • fileinput (for [files/stdin] arguments)
  • re (regular expressions should be native)
  • glob (glob.glob should be native)
  • csv (for csv and tsv inputs)
  • urllib.request (to deal with input argumens that are url)
  • subprocess

Regular expressions

We want to have all re.* functions available (as if they were native functions).

In order to enable re flags, use: re.I re.X re.S

Subprocesses (qx, qxlines, qxsystem)

a=qx( "ls" )
for x in qxlines("find | grep '\.jpg$'"): 
  ...
qxsystem("vim myfile")

Execute command return its stdout

qx(*x)      →  returns    subprocess.getoutput(x)

Execute command return its stdout lines

qxlines(*x) →  returns    subprocess.getoutput(x).splitlines()

Execute command -- system

qxsystem(*x) →  calls     subprocess.call(x,shell=True)

STDERR - warn, die

warn(*args)  → print to stderr
die(*args)   → warn and exit 1

Other functions

slurpurlutf8(self,f)

filename    = lambda s : F.filename()      # inherited from fileinput
lineno      = lambda s : F.lineno()
filelineno  = lambda s : F.filelineno()
parno       = lambda s : s.parno_          # paragraph number
fileparno   = lambda s : s.fileparno_
nextfile    = lambda s : F.nextfile()
isfirstline = lambda s : F.isfirstline()
isfirstpar  = lambda s : s.fileparno == 1
close       = lambda s : F.close()

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

jjcli-0.1.28.tar.gz (4.9 kB view details)

Uploaded Source

Built Distribution

jjcli-0.1.28-py2.py3-none-any.whl (5.8 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file jjcli-0.1.28.tar.gz.

File metadata

  • Download URL: jjcli-0.1.28.tar.gz
  • Upload date:
  • Size: 4.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-requests/2.28.1

File hashes

Hashes for jjcli-0.1.28.tar.gz
Algorithm Hash digest
SHA256 2c57a9873c65d693e79ef6d0b9ee83937b96dc76656706c5be5fbced63986b4e
MD5 b1fb5158d512b5ef42765396e7756b8b
BLAKE2b-256 dd81845bd699fad42374e99f53140021b5afda28c52031ade31133b168d95c05

See more details on using hashes here.

File details

Details for the file jjcli-0.1.28-py2.py3-none-any.whl.

File metadata

  • Download URL: jjcli-0.1.28-py2.py3-none-any.whl
  • Upload date:
  • Size: 5.8 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-requests/2.28.1

File hashes

Hashes for jjcli-0.1.28-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 a5ea1c2782f51feb2fee65b114b38a6e63c44bf38505239220905f616ac05f0a
MD5 8bd4861593a20fd12554631f63143e86
BLAKE2b-256 468451c3f21176913c7715d333df651a90562271346988d7b76b4cb8d90773b9

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page