Skip to content

Instantly share code, notes, and snippets.

@kana-sama
Last active June 23, 2022 20:07
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kana-sama/bec55d4dcf49d398d54a76b97e22ea1b to your computer and use it in GitHub Desktop.
Save kana-sama/bec55d4dcf49d398d54a76b97e22ea1b to your computer and use it in GitHub Desktop.
import Data.Generics.Uniplate.Data (universeBi)
import Data.List (nub, intercalate)
import Language.Python.Common
import Language.Python.Version3 (parseModule)
import System.Environment (getArgs)
fromName :: DottedNameSpan -> String
fromName dn = intercalate "." [s | Ident s _ <- dn]
extract :: StatementSpan -> [String]
extract (Import items _) = [fromName name | ImportItem name _ _ <- items]
extract (FromImport (ImportRelative _ (Just name) _) _ _) = [fromName name]
extract _ = []
main :: IO ()
main = do
[path] <- getArgs
source <- readFile path
let Right (module_, _) = parseModule source path
putStrLn (unlines (nub (universeBi module_ >>= extract)))
name: hspg
dependencies:
- base
- language-python
- uniplate
executables:
hspg-exe:
main: Main.hs
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment