Sublime Forum

ST3: ExportHtml

#37

os.path.exists

0 Likes

#38

Let’s pretend that I did that originally :smile: I did it in the _search_zip method. Also added a method to get package and asset name from absolute path. Updates on the Gist .

Edit: err half way. Woops. :blush:

0 Likes

#39

Another thing, generally you wanna use try/finally when using open() zipfile.ZipFile() etc

Python has with for that: with open(bla) as file_handle: file_handle.read()

0 Likes

#40

def get_package_and_asset(path): package = os.path.basename(os.path.dirname(path)) package = package.replace(".sublime-package", "") asset = os.path.basename(path) return (package, asset)

I want my money back! Oh wait, I didn’t pay any nor do I really care about windows absolute paths!

0 Likes

#41

Or will that work on NT and I’m loopy?

0 Likes

#42

[quote=“castles_made_of_sand”]def get_package_and_asset(path): package = os.path.basename(os.path.dirname(path)) package = package.replace(".sublime-package", "") asset = os.path.basename(path) return (package, asset)

I want my money back! Oh wait, I didn’t pay any nor do I really care about windows absolute paths![/quote]

Looks at my poor poor windows machine that I am forced to use for development :frowning:

0 Likes

#43

Nevermind :smile: I’m satiated haha

os.path.basename

That’s the one I was trying to think of the other day

0 Likes

#44

I think it’ll be fine actually

0 Likes

#45

[code]>>> import posixpath

import ntpath
ntpath.basename(“C:\fuck\fucker”)
‘fucker’

os.path is posixpath
True
[/code]

Learn something every day

0 Likes

#46

Yup I tested it after I posted. Also added the “with” statement. Hadn’t seen that before, though I still should have done the try catch stuff. Oh well though, this is why it’s good to share code.

0 Likes

#47

Oh, wait, one more thing.

Will that helper handle nested assets? “Packages/Path/Subfolder/asset.pth”?

0 Likes

#48

It will as soon as I fix it?

edit:
the “too” at the end was wrong and bothering me.

0 Likes

#49

Haha, good answer

There’s also the bytes/unicode inconsistency on python 3 between zipfile open and normal open

0 Likes

#50

Had to go take care of some other things, so that took longer than I wanted it to. Anyways, it should now handle nested assets. Also, everything is returned as bytes now.

0 Likes

#51

I meant more this guy:

def get_package_and_asset(path): package = os.path.basename(os.path.dirname(path)) package = package.replace(".sublime-package", "") asset = os.path.basename(path) return (package, asset)

That helper doesn’t handle nested paths too well.

Your get_package_asset function should have worked with nested files before, if I’m not mistaken :smile:

0 Likes

#52

Ah I see. I will…get back on that. Ha. No I don’t think it would. I was just looking at the top level package directory, so anything nested would have been missed. I was…umm…testing you to make sure you saw the problem too? Yea let’s go with that :smiley:

0 Likes

#53

Unless you meant specifying the entire asset path, then yes it would have. In fact, maybe I should go back to that.

Edit:
So get_package_and_asset_name handles recursive files. I’ve added a parameter to get_package_asset to do the recursive search (defaults to false). I was thinking this may be useful if nested folders are allowed for settings. I think I’ve seen a post on this forum related to something like that.

0 Likes

#54

Sorry, was out getting dinner. So it will search for a given base file name anywhere in a zip/folder?

Can’t imagine when I’d want that really.

Mostly I just want ability to get things like dict(pkg='Murky', relative_path='waters/salty/green.color')

Will look over latest incarnation

0 Likes

#55

gist.github.com/skuroda/4965913 … set-py-L40

Opening explicitly in rb mode ftw

0 Likes

#56

gist.github.com/skuroda/4965913 … et-py-L125

os.walk should in essence recurse by itself I think

I know the doc for get_package_and_asset_name says “This method will return
the package name and asset name from an absolute path” but it would be nice if
it was able to handle paths as returned by things like:

>>> view.settings().get('syntax') 'Packages/Python/Python.tmLanguage'

0 Likes