help-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: concat vs format


From: Jean-Christophe Helary
Subject: Re: concat vs format
Date: Sun, 9 Dec 2018 22:42:15 +0900

Stephan,

I tried your suggestion but it did not (seem to) work.

But after simplifying the code, I found a simpler way to identify the issue, so 
that I can show it to the list.

I run edebug on this:

(defun dailyTemplate (myDay)
  (interactive (list
                (read-number "Date: " (string-to-number (format-time-string 
"%d")))))
  (let* ((myToday (getMyDates myDay))
        ; (myTomorrow (+ (getMyDates myDay) 84600))
        ; (myYesterday (- (getMyDates myDay) 84600))

         (siteRoot "/Users/suzume/Documents/Code/brandelune.github.io/")

         (cssRoot (concat siteRoot "css/" (format-time-string "%Y" myToday) 
"/"))

And here are the edebug messages:

Edebug: dailyTemplate
 [4 times]
Result: "09"

Result: 9 (#o11, #x9, ?\C-i)

Result: 9 (#o11, #x9, ?\C-i)

Result: (9)
 [3 times]
Result: 9 (#o11, #x9, ?\C-i)

Result: 1544324400 (#o13403102460, #x5c0c8530)
 [2 times]
Result: "/Users/suzume/Documents/Code/brandelune.github.io/"
 [2 times]
Result: 1544324400 (#o13403102460, #x5c0c8530)

Result: "2018"

Result: "/Users/suzume/Documents/Code/brandelune.github.io/..."

So, the last concat gives me a path that's not the result of a "concat" on the 
values that I feed it. Why ?

"myDay" is checked to be between 1 and 31 and "getMyDates" returns this:

(encode-time (list 0 0 12 myDay myMonth myYear nil nil 32400) 'integer)

When I run:

(concat "/Users/suzume/Documents/Code/brandelune.github.io/" "css/" 
(format-time-string "%Y" 1544324400) "/")

I *do* get what I expect, which is:

"/Users/suzume/Documents/Code/brandelune.github.io/css/2018/"

There is clearly something I do not understand here... :(

Jean-Christophe 

> On Dec 9, 2018, at 20:30, Stefan Huchler <stefan.huchler@mail.de> wrote:
> 
> I run into a similar problem when I used the prin1 function. It had to
> do with the default value auf print-length which was to low.
> 
> can you put a (let* ((print-length 5000)) around your code and test
> that? Or look up the variable if it could have something todo with your
> problem.
> 
> Jean-Christophe Helary <brandelune@gmail.com> writes:
> 
>>> On Dec 9, 2018, at 13:09, Drew Adams <drew.adams@oracle.com> wrote:
>>> 
>>>> Is there a difference between:
>>>> (concat firstPartofURL secondPartofURL) and
>>>> (format "%s%s" firstPartofURL secondPartofURL)?
>>> 
>>> If both args are strings then no; the result
>>> is the same.  But the functions are very
>>> different - they take different args and,
>>> aside from some cases like this one where
>>> the result is the same for some args, their
>>> uses/purposes are different.
>> 
>> Thank you.
>> 
>> I'm trying to create URLs from dates and at one point I get a concat that 
>> outputs "/path/to/url/..." instead of "/path/to/url/12/04/index.html".
>> I checked the code and put format instead of concat and got the same
>> result. All the things I try to concat are strings that I
>> progressively build over other strings, and edebug gives me correct
>> values up to the point where the wrong string is created...
>> 
>> I'm going to re-check the whole thing...
>> 
>> Jean-Christophe Helary
>> -----------------------------------------------
>> http://mac4translators.blogspot.com @brandelune
> 
> 

Jean-Christophe Helary
-----------------------------------------------
http://mac4translators.blogspot.com @brandelune





reply via email to

[Prev in Thread] Current Thread [Next in Thread]