summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.travis.yml2
-rw-r--r--CMakeLists.txt30
-rwxr-xr-xacprep1
-rw-r--r--doc/NEWS10
-rw-r--r--doc/ledger.14
-rw-r--r--doc/ledger3.texi106
-rw-r--r--lisp/ledger-fontify.el3
-rw-r--r--lisp/ledger-navigate.el2
-rw-r--r--lisp/ledger-regex.el16
-rw-r--r--src/system.hh.in12
-rw-r--r--test/unit/CMakeLists.txt2
11 files changed, 130 insertions, 58 deletions
diff --git a/.travis.yml b/.travis.yml
index 98b0ab82..d1a72d90 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -22,7 +22,7 @@ env:
# _MIN is used when building the master branch
# _MAX is used when building any other branch
- BOOST_VERSION_MIN="1.49.0"
- - BOOST_VERSION_MAX="1.58.0"
+ - BOOST_VERSION_MAX="1.59.0"
# List of required boost libraries to build
- BOOST_LIBS="date_time,filesystem,iostreams,python,regex,system,test"
# List of required Homebrew formulae to install
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 2516b530..7a3dc3fa 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -9,8 +9,8 @@ PROJECT(ledger)
set(Ledger_VERSION_MAJOR 3)
set(Ledger_VERSION_MINOR 1)
set(Ledger_VERSION_PATCH 1)
-set(Ledger_VERSION_PRERELEASE "-alpha.1")
-set(Ledger_VERSION_DATE 20141005)
+set(Ledger_VERSION_PRERELEASE "")
+set(Ledger_VERSION_DATE 20150915)
set(Ledger_TEST_TIMEZONE "America/Chicago")
@@ -164,6 +164,32 @@ endif()
cmake_pop_check_state()
+# Check if fix for https://github.com/boostorg/python/issues/39 is needed
+if (HAVE_BOOST_PYTHON)
+cmake_push_check_state()
+
+set(CMAKE_REQUIRED_INCLUDES ${CMAKE_INCLUDE_PATH} ${Boost_INCLUDE_DIRS})
+set(CMAKE_REQUIRED_LIBRARIES ${Boost_LIBRARIES} ${PROFILE_LIBS})
+
+check_cxx_source_runs("
+#include <boost/python.hpp>
+
+struct X { int y; };
+
+int main()
+{
+ boost::python::make_setter(&X::y);
+}" BOOST_MAKE_SETTER_RUNS)
+
+if (BOOST_MAKE_SETTER_RUNS)
+ set(HAVE_BOOST_159_ISSUE_39 0)
+else()
+ set(HAVE_BOOST_159_ISSUE_39 1)
+endif()
+
+cmake_pop_check_state()
+endif()
+
########################################################################
include_directories(${CMAKE_INCLUDE_PATH})
diff --git a/acprep b/acprep
index 17436960..90b486ec 100755
--- a/acprep
+++ b/acprep
@@ -1085,7 +1085,6 @@ typical user:
products Report the products directory path
rsync Rsync a copy of the source tree into Products
sloc Report total Source Lines Of Code
- submodule Updates Git submodules (better to use 'pull')
version Output current HEAD version to version.m4
NOTE: If you wish to pass options to CMake or make, add "--" followed by
diff --git a/doc/NEWS b/doc/NEWS
index 94c0946a..21700ddc 100644
--- a/doc/NEWS
+++ b/doc/NEWS
@@ -1,11 +1,13 @@
Ledger NEWS
-* 3.x.x
+* 3.1.1
- Added a --no-revalued option
- Improved Embedded Python Support
+- Use ./.ledgerrc if ~/.ledgerrc doesn't exist
+
- Fixed parsing of transactions with single-character payees and comments
- Fixed crash when using -M with empty result
@@ -16,7 +18,7 @@
- Fixed crash when using --trace 10 or above
-- Build fix for boost 1.56
+- Build fix for boost 1.56, 1.58, 1.59
- Build fix for Cygwin
@@ -24,6 +26,10 @@
- Various documentation improvements
+- Examples in the documentation are tested just like unit tests
+
+- Add continuous integration (https://travis-ci.org/ledger/ledger)
+
* 3.1
- Changed the definition of cost basis to preserve the original cost basis
diff --git a/doc/ledger.1 b/doc/ledger.1
index 0445c237..4997509f 100644
--- a/doc/ledger.1
+++ b/doc/ledger.1
@@ -1359,12 +1359,12 @@ option.
.It Fn trim value
Trim leading and trailing whitespace from
.Ar value .
-.It Fn truncated string, total_len, account_len
+.It Fn truncated string total_len account_len
Truncate
.Ar string
to
.Ar total_len
-enusring that each account is at least
+ensuring that each account is at least
.Ar account_len
long.
.\".It Sy uncleared
diff --git a/doc/ledger3.texi b/doc/ledger3.texi
index d32d7947..a3794050 100644
--- a/doc/ledger3.texi
+++ b/doc/ledger3.texi
@@ -3,6 +3,7 @@
@setfilename ledger3.info
@include version.texi
@set FIXME:UNDOCUMENTED @sc{undocumented}! Please help by contributing documentation for this feature.
+@set InternalUseOnly For internal use only.
@settitle Ledger: Command-Line Accounting
@c Before release, run C-u C-c C-u C-a (texinfo-all-menus-update with
@@ -405,7 +406,7 @@ install` to install. If these intructions do not work for you can check the
Ledger has a complete online help system based on GNU Info. This manual
can be searched directly from the command-line using @code{info ledger},
-which will bring up this entire manual in your TTY. Alternatively, the
+which will bring up this entire manual in your TTY. Alternatively, the
shorter man page can be accessed from the command-line either via
@code{man ledger} or @code{ledger --help}
@@ -4682,7 +4683,7 @@ from the file above.
@findex --account @var{STR}
@findex --rich-data
-The @command{convert} command accepts four options. They are
+The @command{convert} command accepts four options. They are
@option{--invert} which inverts the amount field, @option{--auto-match}
which automatically matches an account from the Ledger journal for every
CSV line, @option{--account @var{STR}} which you can use to specify the
@@ -4733,7 +4734,7 @@ the environment variable @env{LEDGER_FILE}) this entry will not be
printed again.
In the output above, the account is @samp{Expenses:Unknown} for CSV
-lines. You can use the @option{--auto-match} option to automatically
+lines. You can use the @option{--auto-match} option to automatically
match an account from your Ledger journal.
You can also use @command{convert} with @code{payee} and @code{account}
@@ -5901,7 +5902,8 @@ or testing small journal files not associated with your main financial
database.
@item --debug @var{CODE}
-@value{FIXME:UNDOCUMENTED}
+If ledger has been built with debug options this will provide extra data during
+the run.
@item --help
@itemx -h
@@ -5964,7 +5966,8 @@ slowdown. When combined with @option{--debug @var{CODE}} ledger will
produce memory trace information.
@item --verify-memory
-@value{FIXME:UNDOCUMENTED}
+Verify that every constructed object is properly destructed. This is for
+debugging purposes only.
@item --version
Print version information and exit.
@@ -6753,7 +6756,8 @@ week.
@item --subtotal
@itemx -s
-@value{FIXME:UNDOCUMENTED}
+Group all postings together. This is very similar to the totals shown by
+the balance report.
@item --tail @var{INT}
@itemx --last @var{INT}
@@ -8154,7 +8158,8 @@ Assets:Cash ¤ 123,45
@end defun
@defun amount_expr
-@value{FIXME:UNDOCUMENTED}
+Return the calculated amount of the posting according to the @option{--amount}
+option.
@end defun
@defun ansify_if value color bool
@@ -8236,8 +8241,8 @@ Expenses:Office Supplies ¤ 123,00
@end smallexample
@end defun
-@defun format
-@value{FIXME:UNDOCUMENTED}
+@defun format string
+Evaluate @var{string} as format just like the @option{--format} option.
@end defun
@defun format_date date format
@@ -8251,20 +8256,22 @@ Friday, January 16. 2015
@end smallexample
@end defun
-@defun format_datetime
-@value{FIXME:UNDOCUMENTED}
+@defun format_datetime datetime format
+Return the @var{datetime} as a string using @var{format}. Refer to strftime (3)
+for format string details.
@end defun
-@defun get_at
-@value{FIXME:UNDOCUMENTED}
+@defun get_at sequence index
+Return the value in @var{sequence} at @var{index}. The first element is @var{index} 0.
+@value{InternalUseOnly}
@end defun
-@defun is_seq
-@value{FIXME:UNDOCUMENTED}
+@defun is_seq value
+Return true if @var{value} is a sequence. @value{InternalUseOnly}
@end defun
-@defun join
-@value{FIXME:UNDOCUMENTED}
+@defun join value
+Replace all newlines in @var{value} with @code{\n}.
@end defun
@defun justify value first_width latter_width right_justify colorize
@@ -8285,9 +8292,11 @@ $ ledger -f expr.dat --format "»%(justify(account, 30, 30, true))«\n" reg
@end smallexample
@end defun
-@defun market
+@defun market value datetime
@defunx P
-@value{FIXME:UNDOCUMENTED}
+Return the price of @var{value} at @var{datetime}. Note that @var{datetime}
+must be surrounded by brackets in order to be parsed correctly,
+e.g. @code{[2012/03/23]}.
@end defun
@defun nail_down
@@ -8297,7 +8306,7 @@ $ ledger -f expr.dat --format "»%(justify(account, 30, 30, true))«\n" reg
@defvar now
@defvarx d
@defvarx m
-@value{FIXME:UNDOCUMENTED}
+Return the current datetime.
@end defvar
@defvar options
@@ -8323,12 +8332,12 @@ $ ledger -f expr.dat --format "%(percent(amount, 200))\n" reg
@end smallexample
@end defun
-@defun print
-@value{FIXME:UNDOCUMENTED}
+@defun print value
+Print @var{value} to stdout. @value{InternalUseOnly}
@end defun
-@defun quantity
-@value{FIXME:UNDOCUMENTED}
+@defun quantity value
+Return the quantity of @var{value} for values that have a per-unit cost.
@end defun
@defun quoted expression
@@ -8361,37 +8370,38 @@ Expenses:Office Supplies ¤ 123,50
@end smallexample
@end defun
-@defun scrub
-@value{FIXME:UNDOCUMENTED}
+@defun scrub value
+Clean @var{value} using various transformations such as @code{round}, stripping
+value annotations, and more.
@end defun
@defun should_bold
-@value{FIXME:UNDOCUMENTED}
+Return true if expression given to @option{--bold-if} evaluates to true. @value{InternalUseOnly}
@end defun
-@defun strip
+@defun strip value
@defunx S
-@value{FIXME:UNDOCUMENTED}
+Strip value annotation from @var{value}.
@end defun
-@defun to_amount
-@value{FIXME:UNDOCUMENTED}
+@defun to_amount value
+Convert @var{value} to an amount. @value{InternalUseOnly}
@end defun
-@defun to_balance
-@value{FIXME:UNDOCUMENTED}
+@defun to_balance value
+Convert @var{value} to a balance. @value{InternalUseOnly}
@end defun
-@defun to_boolean
-@value{FIXME:UNDOCUMENTED}
+@defun to_boolean value
+Convert @var{value} to a boolean. @value{InternalUseOnly}
@end defun
-@defun to_date
-@value{FIXME:UNDOCUMENTED}
+@defun to_date value
+Convert @var{value} to a date. @value{InternalUseOnly}
@end defun
-@defun to_datetime
-@value{FIXME:UNDOCUMENTED}
+@defun to_datetime value
+Convert @var{value} to a datetime. @value{InternalUseOnly}
@end defun
@defun to_int value
@@ -8406,12 +8416,12 @@ $ ledger -f expr.dat --format "%(1 + to_int('1'))\n%(2,5 + int(2,5))\n" reg asse
@end smallexample
@end defun
-@defun to_mask
-@value{FIXME:UNDOCUMENTED}
+@defun to_mask value
+Convert @var{value} to a mask. @value{InternalUseOnly}
@end defun
-@defun to_sequence
-@value{FIXME:UNDOCUMENTED}
+@defun to_sequence value
+Convert @var{value} to a sequence. @value{InternalUseOnly}
@end defun
@defun to_string value
@@ -8434,7 +8444,8 @@ $ ledger -f expr.dat --now 2015/01/01 --format "%(today)\n" reg assets
@end defun
@defun total_expr
-@value{FIXME:UNDOCUMENTED}
+Return the calculated total of the posting according to the @option{--total}
+option.
@end defun
@defun trim value
@@ -8447,8 +8458,9 @@ $ ledger -f expr.dat --format "»%(trim(' Trimmed '))«\n" reg assets
@end smallexample
@end defun
-@defun truncated
-@value{FIXME:UNDOCUMENTED}
+@defun truncatedstring total_len account_len
+Truncate @var{string} to @var{total_len} ensuring that each account is at least
+@var{account_len} long.
@end defun
@defun unround
@@ -8588,7 +8600,7 @@ $ ledger -f expr.dat --format "%12(5*O)\n" reg assets
@item [DATEFMT]
Inserts the result of formatting a posting's date with a date
-format string, exactly like those supported by @code{strftime}. For
+format string, exactly like those supported by strftime (3). For
example: @samp{%[%Y/%m/%d %H:%M:%S]}.
@item S
diff --git a/lisp/ledger-fontify.el b/lisp/ledger-fontify.el
index 2d4f850e..076e52b7 100644
--- a/lisp/ledger-fontify.el
+++ b/lisp/ledger-fontify.el
@@ -46,7 +46,8 @@
(beginning-of-line)
(while (< (point) end)
(cond ((or (looking-at ledger-xact-start-regex)
- (looking-at ledger-posting-regex))
+ (looking-at ledger-posting-regex)
+ (looking-at ledger-recurring-line-regexp))
(ledger-fontify-xact-at (point)))
((looking-at ledger-directive-start-regex)
(ledger-fontify-directive-at (point))))
diff --git a/lisp/ledger-navigate.el b/lisp/ledger-navigate.el
index 4da857a7..7ac440f7 100644
--- a/lisp/ledger-navigate.el
+++ b/lisp/ledger-navigate.el
@@ -158,7 +158,7 @@ Requires empty line separating xacts."
(save-excursion
(goto-char pos)
(beginning-of-line)
- (if (looking-at "[ =~0-9]")
+ (if (looking-at "[ =~0-9\\[]")
(ledger-navigate-find-xact-extents pos)
(ledger-navigate-find-directive-extents pos))))
diff --git a/lisp/ledger-regex.el b/lisp/ledger-regex.el
index 9d8394df..5d525d95 100644
--- a/lisp/ledger-regex.el
+++ b/lisp/ledger-regex.el
@@ -238,6 +238,22 @@
code
(note end-note))
+(ledger-define-regexp recurring-line
+ (macroexpand
+ `(rx (and line-start
+ (regexp "\\[.+/.+/.+\\]")
+ (? (and (+ blank) (regexp ,ledger-state-regexp)))
+ (? (and (+ blank) (regexp ,ledger-code-regexp)))
+ (+ blank) (+? nonl)
+ (? (regexp ,ledger-end-note-regexp))
+ line-end)))
+ "Match a transaction's first line (and optional notes)."
+ (actual-date full-date actual)
+ (effective-date full-date effective)
+ state
+ code
+ (note end-note))
+
(ledger-define-regexp account
(rx (group (and (not (any blank ?\[ ?\( ?: ?\;)) (*? nonl))))
"")
diff --git a/src/system.hh.in b/src/system.hh.in
index 8de27ad6..cd7b8c2b 100644
--- a/src/system.hh.in
+++ b/src/system.hh.in
@@ -71,6 +71,7 @@
#define HAVE_BOOST_PYTHON @HAVE_BOOST_PYTHON@
#define HAVE_BOOST_REGEX_UNICODE @HAVE_BOOST_REGEX_UNICODE@
+#define HAVE_BOOST_159_ISSUE_39 @HAVE_BOOST_159_ISSUE_39@
#define DEBUG_MODE @DEBUG_MODE@
#define NO_ASSERTS @NO_ASSERTS@
@@ -253,6 +254,17 @@ typedef std::ostream::pos_type ostream_pos_type;
#include <boost/iterator/indirect_iterator.hpp>
+#if BOOST_VERSION == 105900 && HAVE_BOOST_159_ISSUE_39
+// Fix for https://github.com/boostorg/python/issues/39
+namespace boost { namespace python {
+template <class D>
+inline object make_setter(D const& x)
+{
+ return detail::make_setter(x, default_call_policies(), is_member_pointer<D>(), 0);
+}
+}}
+#endif
+
#endif // HAVE_BOOST_PYTHON
#endif // _SYSTEM_HH
diff --git a/test/unit/CMakeLists.txt b/test/unit/CMakeLists.txt
index 4f688755..9cacb4e7 100644
--- a/test/unit/CMakeLists.txt
+++ b/test/unit/CMakeLists.txt
@@ -15,7 +15,7 @@ if (BUILD_LIBRARY)
add_ledger_test(UtilTests)
add_executable(MathTests t_amount.cc t_commodity.cc t_balance.cc t_expr.cc t_value.cc)
- set_source_files_properties(t_amount.cc PROPERTIES COMPILE_FLAGS "-Wno-unused-comparison")
+ set_source_files_properties(t_amount.cc t_value.cc PROPERTIES COMPILE_FLAGS "-Wno-unused-comparison")
if (CMAKE_SYSTEM_NAME STREQUAL Darwin AND HAVE_BOOST_PYTHON)
target_link_libraries(MathTests ${PYTHON_LIBRARIES})
endif()