|
From: Artem Y. <ne...@gm...> - 2008-08-24 19:58:35
|
Yuri Takhteyev wrote:
>> Maybe we should use some random hashes, like
>> `md5.new(str(random.random())).hexdigest()` ?
>> I don't think that users will be handle with placeholders, in case if
>> everything works fine.
>>
>
> We could do that, though it might be better to avoid any actual
> randomness by using a fixed seed:
>
> def reset_placeholders(seed = DEFAULT_SEED) :
> self.seed = seed
> random.seed(seed)
> self.html_placeholder_prefix = STX+"%x" % (random.random()*1000000000)
> self.html_placeholder = self.html_placeholder.prefix + "%x" + ETX
> ...
>
> and later generate HTML placeholders with
>
> random.seed(self.seed + i)
> self.html_placeholder % (random.random()*1000000000)
>
> Or something more like:
>
> def get_random_token(n = 10)
> return "".join(["abcdefghijklmnopqrstuvwxyx"[int(random.random()*26)]
> for i in range(n)])
>
> def reset_placeholders(seed = DEFAULT_SEED) :
> random.seed(seed)
> self.html_placeholder_prefix = STX + get_random_token()
> self.html_placeholder = self.html_placeholder_prefix + "%s" + ETX
>
> - yuri
>
>
I agree, using seed is better idea.
What about something like this:
RND_SEED = 789654
def getRandomToken(n=10, seed=RND_SEED):
random.seed(seed)
return "".join([chr(random.randint(97, 122)) for i in range(n)])
STX = u'\u0002' # Use STX ("Start of text") for start-of-placeholder
ETX = u'\u0003' # Use ETX ("End of text") for end-of-placeholder
HTML_PLACEHOLDER_PREFIX = STX + getRandomToken()
HTML_PLACEHOLDER = HTML_PLACEHOLDER_PREFIX + "%s" + ETX
INLINE_PLACEHOLDER_PREFIX = STX + getRandomToken()
INLINE_PLACEHOLDER = INLINE_PLACEHOLDER_PREFIX + "%s" + ETX
or maybe wrap it in class, as you did.
|