Merge commit '88ad616d18b69eb03bc14eaa9ce6b32be90867a6' into next

This commit is contained in:
Craig Earls 2015-09-18 06:53:23 -07:00
commit 5905c21ded
11 changed files with 130 additions and 58 deletions

View file

@ -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

View file

@ -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})

1
acprep
View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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
@ -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

View file

@ -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))))

View file

@ -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))))

View file

@ -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))))
"")

View file

@ -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

View file

@ -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()