Changeset - 8da3fd4bd369
[Not reviewed]
0 2 0
Brett Smith - 6 years ago 2017-12-18 15:14:01
brettcsmith@brettcsmith.org
util: Add common word-slicing functions.
2 files changed with 17 insertions and 5 deletions:
0 comments (0 inline, 0 general)
import2ledger/importers/nbpy2017.py
Show inline comments
...
 
@@ -11,3 +11,3 @@ class Invoice2017:
 
    DISCOUNT_SHIRT_RATE = STANDARD_SHIRT_RATE
 
    DATE_FMT = '%b. %d, %Y,'
 
    DATE_FMT = '%b. %d, %Y'
 
    CURRENCY = 'USD'
...
 
@@ -83,6 +83,5 @@ class Invoice2017:
 
        self.actions = []
 
        date_wordcount = self.DATE_FMT.count(' ') + 1
 
        for timestamp, description, amount in rows_text:
 
            if description.startswith('Paid '):
 
                last_stripe_id = description.rsplit(None, 1)[1]
 
                last_stripe_id = util.rslice_words(description, 1, limit=1)
 
                action = {
...
 
@@ -95,4 +94,4 @@ class Invoice2017:
 
            # Trim extraneous text like the time/a.m./p.m.
 
            date_words = timestamp.split(' ', date_wordcount + 1)[:date_wordcount]
 
            action['date'] = util.strpdate(' '.join(date_words), self.DATE_FMT)
 
            date_str = util.rejoin_slice_words(timestamp, slice(2), ',', 2)
 
            action['date'] = util.strpdate(date_str, self.DATE_FMT)
 
            action['stripe_id'] = last_stripe_id
import2ledger/util.py
Show inline comments
 
import datetime
 
import functools
 

	
 
def _rejoin_slice_words(method_name, source, wordslice, sep=None, limit=None, joiner=None):
 
    if joiner is None:
 
        joiner = ' ' if sep is None else sep
 
    return joiner.join(_slice_words(method_name, source, wordslice, sep, limit))
 
rejoin_slice_words = functools.partial(_rejoin_slice_words, 'split')
 
rejoin_rslice_words = functools.partial(_rejoin_slice_words, 'rsplit')
 

	
 
def _slice_words(method_name, source, wordslice, sep=None, limit=None):
 
    return getattr(source, method_name)(sep, limit)[wordslice]
 
slice_words = functools.partial(_slice_words, 'split')
 
rslice_words = functools.partial(_slice_words, 'rsplit')
 

	
0 comments (0 inline, 0 general)